1.常用数据库的JDBC驱动程序及连接串示例
数据库 | JDBC驱动程序 | 连接串示例 |
Oracle | Oracle.jdbc.driver.OracleDriver | Jdbc:oracle:thin:@localhost:1521:orcl |
DB2 | Com.ibm.db2.jdbc.app.DB2Driver | Jdbc:db2://localhost:5000/testDB |
SQL Server | Com.microsoft.jdbc.sqlserver.SQLServerDriver | Jdbc:microsoft:sqlserver://localhost:1433:DatabaseName=testDB |
Sybase | Com.sybase.jdbc.SybDriver | Jdbc:Sybase:Tds:localhost:5007/testDB |
Mysql | Com.mysql.jdbc.Driver | Jdbc:mysql://localhost:3306/testDB |
2.元数据
数据库元数据
利用java.sql.DatabaseMetaData获取数据表元数据、索引信息、数据库版本信息、驱动程序版本信息、驱动程序支持的JDBC版本等信息。获取DatabaseMetaData实例的方法是通过调用Connection的getMetaData方法。
结果集元数据
利用java.sql.ResultSetMetaData可以获取存放在java.sql.ResultSet对象中的结果集元数据,如字段名、字段类型、数据表名、字段数等。获取ResultSetMetaData实例的方法是通过调用ResultSet的getMetaData()方法。常用方法如下:
getColumnCount():获取结果集中的字段总数
getColumnName():根据传入的字段序号(从1计数)获取字段名
getColumnTypeName():根据传入的字段序号(从1计数)获取字段类型字符串
getColumnType():根据传入的字段序号(从1计数)获取字段类型编号。字段类型编号和字段类型之间的对应关系可以参考java.sql.Types的定义。
3.数据集的二次处理
3.1JDBC提供的ResultSet
ResultSet对象不是一个严格意义上的数据集,而是一个指向数据集的游标。ResultSet对象不负责存储数据,即数据仍然放在数据库的一端,并没有载入应用程序一端的内存。Statement对象对应着数据库游标。
数据集类型:Result.TYPE_FORWARD_ONLY只能向前移动指针,是默认的类型,TResult.YPE_SCROLL_INSENSITIVE可以自由移动指针,并且数据库中的数据变动不会反映到数据集中,Result.TYPE_SCROLL_SENSITIVE可以自由移动指针,并且数据库中的数据变动会反映到数据集中.
数据集的并发性:Result.CONCUR_READ_ONLY只读的,Result.CONCUR_UPDATABLE可修改的.
3.2JDBC提供的RowSet
对ResultSet接口进行封装。
4.批处理
基于Statement
例:
stmt = conn.createStatement();
stmt.addBatch("insert into foo values(1,'zhang')");
stmt.addBatch("insert into foo values(2,'wang')");
stmt.addBatch("insert into foo values(3,'li')");
stmt.executeBatch();
基于PreparedStatement
例:
pstmt = conn.prepareStatement("insert into foo values(?,?)");
pstmt.setInt(1,1);
pstmt.setString(2,"zhang");
pstmt.addBatch();
pstmt.setInt(1,2);
pstmt.setString(2,"wang");
pstmt.addBatch();
pstmt.setInt(1,3);
pstmt.setString(2,"li");
pstmt.addBatch();
pstmt.executeBatch();
5.存储过程
存储过程是存储在数据库中的一段程序,当创建存储过程时,系统会对其进行优化和编译,并将执行代码存储在数据库中。
优点:运行速度快、网络负荷少、安全机制放心。
6.触发器
数据库触发器是响应插入、更新或删除等数据库时间而执行的过程。它定义了当一些数据库相关事件发生时应采取的动作,可用于管理复杂的完整性约束,或监控对表的修改。它的类型有:语句级触发器及行级触发器。