JDBC学习笔记之dml语句(PreparedStatement&Statement)

来源:互联网 发布:cda转mp3软件 编辑:程序博客网 时间:2024/05/18 00:23

今天继续的学习JDBC,遇到这样的两个接口,PreparedStatement和Statement,感觉很奇怪,JDK为什么要搞出这样的两个接口呢,一个Statement不就足够了吗?于是乎就研究了下这两者的用法。查看了jdk_api_1.6,发现原来Statement是PreparedStatement的父接口,而且PrepareStatement能够更加高效的执行sql语句,以下举个简单的例子。

例子:分别用这个两个类进行数据库的插入操作,即使用insert语句。如插入一条记录:id:1,name:小明,sex:男,date:1990-02-02,height:174

方法一:运用Statement这个接口。核心代码如下:

  Statement statement = conn.createStatement();
        String sql = "insert into student(id, name, sex, date, height)" +
        " values(1, '小明', '男', '1990-02-02', 174)";
          statement.executeUpdate(sql);

我们可以看到,它是直接运用了insert语句的格式进行记录的插入,当插入多个数据时,这条语句将会变得很长很长,而且你又不知道,174是字符串还是其他类型的,因为字符串需要加单引号,当然,或许这个例子不怎么好,你可以一眼就看出174肯定不是字符串,它表示身高来的。下面我们来看看PreparedStatement的用法

方法二:运用PreparedStatment这个接口,核心代码如下:

       preStatement = conn.prepareStatement("insert into student values(?, ?, ?, ?, ?)");
       preStatement.setInt(1, 1);
       preStatement.setString(2, "小明");
       preStatement.setString(3, "男");
       preStatement.setDate(4, date);
       preStatement.setDouble(5, 174);
       preStatement.executeUpdate();

我们容易看出,它是先将insert这条sql语句作为一个参数传进prepareStatement这个方法里面,用n个(n==你要插入的记录的字段数)来表示数据,然后通过各种setXXX(字段的位置(从1开始), 字段的数据)方法来设置这条记录的值,虽然你看起来好像代码更多了,其实不然,通过这样的方式,首先,我们很容易理解,我们插入的字段类型是什么,其次,不用再去写着繁杂的insert语句。无疑,java这样做是合理,这就好比,为什么有KeyListener和KeyAdapter这样的两种监听器类了。

呵呵~还是蛮喜欢java的,毕竟它真的蛮人性化的(相对C),说了这么多,如有错误,还请各位大牛指正。

联系:229047554@qq.com

原创粉丝点击