发表于: 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并做比较。


返回列表 返回列表
评论

    分享到