发表于: 2017-02-26 22:33:46
1 1608
今天完成的事:
1.了解了用PreparedStatement接口来操作JDBC进行增删查改的方法,以增加数据为例,代码如下:
public class Hello_1 {
private static final String DRIVER ="com.mysql.jdbc.Driver";
private static final String URL ="jdbc:mysql://localhost:3306/offline_apply?useSSL=false";
private static final String user ="root";
private static final String password ="123456";
public static void main(String args[])throws Exception{
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL,user,password);
String name =" Mr'Smith";
String note =" we don't know its sex";
Date Birthday = new Date(1991-12-19);
String sql = " INSERT INTO TEST(NAME,NOTE,Birthday) VALUES(?,?,?); "; //用'?'占位,调用常量指代
PreparedStatement stmt = conn.prepareStatement(sql); //声明stmt对象并调用指令
stmt.setString(1, name); //以数字指代'?'的序位,选择常量赋值给占位的'?'
stmt.setString(2, note);
stmt.setDate(3, new java.sql.Date(Birthday.getTime())); //Date类型到sql.Date类型需转换处理
int len = stmt.executeUpdate(); //执行SQL返回的数据行
System.out.println("影响的数据行数是:"+len);
stmt.close();
conn.close();
}
}
个人主观上认为,PreparedStatement接口相比Statement接口具有更好的灵活性与数据兼容性,在编写程序时可以更直观表达设计人员的思想且更难出现语法错误。
2.接触了JDBC的批处理操作;在这个过程中,思考到了错误语句对指令执行的影响,并进行了尝试,反馈到的结果是:当批处理命令时,错误语句之前的命令将正常执行,并终止错误语句之后的命令执行。在反馈了解了该机制之后,以Statement接口为例在包含throws Exception的条件下尝试修改之前编写的语句来实现优化的批量处理。主要修改内容如下:
conn.setAutoCommit(false); //取消自动提交
try{
stmt.addBatch(包含有SQL命令语句的字串);
stmt.addBatch(包含有SQL命令语句的字串2);
int result [] = stmt.executeBatch();//执行批处理
conn.Commit(); //没有错误则提交
} catch (Exception e){
e.printStackTrace();
conn.rollback(); //进行异常则回滚
}
3.初步涉及Mybatis,第一感觉是省略了Statement接口和PreparedStatement接口绝大部分复杂的JDBC代码编写;
收货:
1.看视频课程写代码的效率实在是太低,还是要自己多读多看多写代码才能更好解决问题;
2.无论是throws Exception还是try{}catch (Exception e)的形式,单一使用并不能完全解决来自数据输入错误时的影响,实用时更多的是复合使用;
遇到的问题:
1.由于SQL并未过于深入了解,于是在观摩某段代码的过程中遇到了“分页”这样的概念,求问该操作是否会经常要使用……
明天计划完成的事:
1.学会实际上手用到Mybatis;
2.尝试用Mybatis和PreparedStatement分别编写DAO并做比较。
评论