老师,作业有点小问题
来源: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。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题