老师,作业有点小问题
来源:6-6 自由编程
孬帮手慕小菜
2020-06-06 21:29:17
Main
package com.abdreas.demo;
public class Main {
public static void main(String[] args) {
course_demo cd = new course_demo();
cd.insert();
cd.selectall();
cd.selectwhere();
cd.update();
cd.delete();
cd.desc();
}
}demo
package com.abdreas.demo;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import com.abdreas.util.jdbcuutil;
public class course_demo {
@Test
/**
* 写入数据
*/
public void insert() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql
String sql = "INSERT course(name,category,desp,createtime)values(?,?,?,?);";
for (int i = 1; i <= 3; i++) {
// 预编译sql
pstmt = conn.prepareStatement(sql);
// 设置参数
switch (i) {
case 1: {
pstmt.setString(1, "JAVA零基础");
pstmt.setString(2, "java");
pstmt.setString(3, " java基础语法");
pstmt.setDate(4, new Date(System.currentTimeMillis()));
// 执行sql
int msg = pstmt.executeUpdate();
if (msg > 0) {
System.out.println("第" + i + "个数据写入成功");
} else {
System.out.println("第" + i + "个数据写入失败");
}
break;
}
case 2: {
pstmt.setString(1, "JAVAweb");
pstmt.setString(2, "JAVA");
pstmt.setString(3, " JSP/SERVLET");
pstmt.setDate(4, new Date(System.currentTimeMillis()));
// 执行sql
int msg = pstmt.executeUpdate();
if (msg > 0) {
System.out.println("第" + i + "个数据写入成功");
} else {
System.out.println("第" + i + "个数据写入失败");
}
break;
}
case 3: {
pstmt.setString(1, "前端小白");
pstmt.setString(2, "前端");
pstmt.setString(3, " HTML/CSS/JS");
pstmt.setDate(4, new Date(System.currentTimeMillis()));
// 执行sql
int msg = pstmt.executeUpdate();
if (msg > 0) {
System.out.println("第" + i + "个数据写入成功");
} else {
System.out.println("第" + i + "个数据写入失败");
}
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn);
}
}
/**
* 显示所有数据
*/
@Test
public void selectall() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql语句
String sql = "select * from ?";
// 预编译sql
pstmt = conn.prepareStatement(sql);
//添加参数
pstmt.setString(1, "course");
// 执行sql
res = pstmt.executeQuery();
while (res.next()) {
int id = res.getInt("id");
String name = res.getString("name");
String category = res.getString("category");
String desp = res.getString("desp");
Date createTime = res.getDate("createTime");
System.out.println(id + " " + name + " " + category + " " + desp + " " + createTime);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn, res);
}
}
/**
* 查询课程名称为Java零基础的数据并显示
*/
@Test
public void selectwhere() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql语句
String sql = "select * from course where name=?";
// 预编译sql
pstmt = conn.prepareStatement(sql);
// 添加参数
pstmt.setString(1, "JAVA零基础");
// 执行sql
res = pstmt.executeQuery();
while (res.next()) {
int id = res.getInt("id");
String name = res.getString("name");
String category = res.getString("category");
String desp = res.getString("desp");
Date createTime = res.getDate("createTime");
System.out.println(id + " " + name + " " + category + " " + desp + " " + createTime);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn, res);
}
}
/**
* 将Java零基础的课程描述改为Java语法
*/
@Test
public void update() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql语句
String sql = "update course set name=? where name = ?";
// 预编译sql
pstmt = conn.prepareStatement(sql);
//添加参数
pstmt.setString(1, "Java语法");
pstmt.setString(2, "JAVA零基础");
// 执行sql
int msg = pstmt.executeUpdate();
if(msg>0) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn);
}
}
/**
* 删除Java Web这门课程
*/
@Test
public void delete() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql语句
String sql = "delete from course where name = ?";
// 预编译sql
pstmt = conn.prepareStatement(sql);
//添加参数
pstmt.setString(1, "JAVAweb");
// 执行sql
int msg = pstmt.executeUpdate();
if(msg>0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn);
}
}
/**
* 按创建时间倒序排序显示所有数据
*/
@Test
public void desc() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
try {
// 建立连接
conn = jdbcuutil.getConnection();
// 编写sql语句
String sql = "select * from course order by ? ?";
// 预编译sql
pstmt = conn.prepareStatement(sql);
//添加参数
pstmt.setString(1, "createtime");
pstmt.setString(2, "desc");
// 执行sql
res = pstmt.executeQuery();
while(res.next()) {
int id = res.getInt("id");
String name = res.getString("name");
String category = res.getString("category");
String desp = res.getString("desp");
Date createtime = res.getDate("createtime");
System.out.println(id+" "+name+" "+category+" "+desp+" "+createtime);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
jdbcuutil.release(pstmt, conn,res);
}
}
}util
package com.abdreas.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class jdbcuutil {
//设置便于修改该的静态变量
private static final String driverClass;
private static final String url;
private static final String username;
private static final String password;
/**
* 初始化静态数据的静态代代码块
*/
static {
//加载属性文件并解析
Properties pro = new Properties();
//获得属性文件的输入流
InputStream ins = jdbcuutil.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
pro.load(ins);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
/**
* 注册驱动的方法
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void loadriver() throws ClassNotFoundException{
Class.forName(driverClass);
}
/**
* 获得连接的方法
* @throws SQLException
*/
public static Connection getConnection() throws Exception {
loadriver();
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
/**
* 释放资源的方法
*/
public static void release(Statement sta,Connection conn) {
if(sta != null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}sta = null;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}conn = null;
}
}
public static void release(Statement sta,Connection conn,ResultSet res) {
if(sta != null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}sta = null;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}conn = null;
}
if(res != null) {
try {
res.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}res = null;
}
}
}配置文件
driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbc?serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8&userSSL=false username=root password=123456
建表
CREATE TABLE if NOT EXISTS course( id int unsigned auto_increment KEY, name varchar(20) NOT NULL comment'课程名称', category varchar(20) NOT NULL comment'所属方向', desp varchar(30) NOT NULL comment'课程描述', createtime datetime NOT NULL comment'创建时间' );
问题:
1.在查询课程名称为Java零基础的数据并显示时候,如果将表名设置为变量时候程序会报错,是因为不能这样写吗?是与程序执行顺序有关吗?
2.请老师给一个批量添加数据的方法,我使用的循环写入代码重复度太高了,我在使用大量?当变量时候程序会报错
3.请老师帮忙看看代码设计缺陷和能改进的地方
1回答
同学的代码完成的不错,关于同学的问题,有如下的解释:
1、不能将表名设置为变量,和执行顺序有关。执行sql语句时,先执行from子句,表示从那张表中获取,如果将表名设置为参数,预编译执行sql时,并不知道从那张表获取,所以报错。
2、可以使用多个?的形式,如:

需要将问号的个数和添加的参数一致。
另外当学到后边mybatis框架时,会将批量插入数据。
3、代码中还存在一些小问题:命名规范问题,比如类名首字母应该大写,例如jdbcuutil 建议改为JdbcUtil。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题