日期:2014-05-16  浏览次数:20382 次

当码农爱上淑女----JDBC使用细节

JDBC(Java ????Database???? Connectivity)

驱动及连接字符串:

  • MySQL数据库

????????????MySQL????Connector/J????Driver

????????????驱动程序包名:mysql-connector-java-x.x.xx-bin.jar

????????????驱动程序类名: com.mysql.jdbc.Driver

????????????JDBC URL: jdbc:mysql://<host>:<port>/<database_name>

????????????默认端口3306,如果服务器使用默认端口则port可以省略

????????????MySQL Connector/J Driver 允许在URL中添加额外的连接属性

????????????eg:????jdbc:mysql://<host>:<port>/<database_name>? property1=value1&property2=value2

  • Oracle数据库

????????????OracleOracle Thin JDBC Driver

????????????驱动程序包名:ojdbc14.jar

????????????驱动程序类名: oracle.jdbc.driver.OracleDriver

????????????JDBC URL: jdbc:oracle:thin:@//<host>:<port>/ServiceName jdbc:oracle:thin:@<host>:<port>:<SID>????????????????????????????

????????????eg:????String url = "jdbc:oracle:thin:@localhost:1521:orcle"

?

数据库的一些知识:

  • DML(Data????Manipulation????Language,数据操作语言):主要由insert、update、delete三个关键字完成。
  • DDL(Data????Definition????Language,数据定义语言):主要由create、alert、drop、truncate四个关键字完成。
  • DCL(Data????Controll????Language,数据控制语言):主要由grant和revoke两个关键字完成。
  • 事务控制语句:主要由commit、rollback 、savepoint三个关键字完成。

JDBC编程的三个步骤:

????????①:加载驱动

????????????????Class.forName("com.mysq.jdbc.Driver");

????????②:获取数据库连接

????????????????DriverManager.getConnection(String url,String user,String password);

????????③:通过Connection对象创建Statement对象(这里所说的Statement对象指Statement和其子类);

????????④:使用Statement执行SQL语句。

????????????????Statement主要有三个方法指向SQL语句

????????????????execute:可以指向任何SQL语句,但比较麻烦

????????????????executeUpdate:主要指向DML和DDL语句。执行DML返回受SQL影响的行数,执行DDL返回0;

????????????????executeQuery:只能执行查询语句(这个从名字中就可以看出来),指向结果将返回一个ResultSet对象。

????????⑤:操作结果集?

????????⑥:关闭数据库连接对象

????????????????(注意点:这里的关闭顺序应该和创建的顺序相反,如:创建时先创建Connection,然后Statement,ResultSet,所以关闭时应该先关闭ResultSet,然后关闭Statement,Connection);

?

?

??你该了解的内容:

PreparedStatement是Statement的子类,那么它和Statement有那些不一样,或者说有什么有点或缺点?

????->PreparedStatement预编译SQL语句,性能更好。

????->PreparedStatement无需“拼接”SQL语句,编程更简单。

????->PreparedStatement可以防止SQL注入,安全性更好。

????