初识jdbc

JDBC  ------------------  java数据库连接技术

Java程序操作数据库

(1)加载驱动类
    Class  vs class
    Class描述类的类
        class关键字

    Class.forName("类名").newInstance();      vs     类名  对象名 = new 类名();
    1、两者都是创建对象
    2、第一种方式的优点在于括号里面的类也许尚不存在,我们可以先用,编译不会报错,适用于团队开发。第二种方式如果类不存在会编译报错。
    3、第一种方式需要处理异常,第二种方式不需要。

(2)获取连接对象
    conn = DriverManager.getConnection(url,user,password);
    url= jdbc:mysql://localhost:3306/student
    url= 协议//--域名(ip地址加端口)--数据库名
    不同的数据库协议有区别

(3)基本操作 (增删查改)
    String sql = "insert into studentinfo(name,password) values(?,?)";
    Statement     vs      PreparedStatement
    Statement stmt = conn.createStatement();
    stmt.execute(sql);底层发生网络交互,流的应用。

    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1,"a");
    ps.setString(2,"b");
    ps.execute();
    
Statement与PreparedStatement的区别与联系:

1、sql语句有区别,Statement需要拼接,PreparedStatement可以设置问号,简单一些。 PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于Statement 对象。
2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。
3、PreparedStatement尽最大可能提高性能。语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行.这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配.那么在任何时候就可以不需要再次编译而可以直接执行.而statement的语句中,即使是相同操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配.当然并不是所有预编译语句都一定会被缓存,数据库本身会用一种策略,比如使用频度等因素来决定什么时候不再缓存已有的预编译结果.以保存有更多的空间存储新的预编译语句。
4、从安全性角度考虑。PreparedStatement更好一些,避免注入攻击。
5、JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章