Jdbc使用:
JDBC API 简介
Driver接口和DriverManager类:前者表示驱动器,后者表示驱动管理器
Connection接口:数据库连接
Statement接口 负责执行SQL语句
PreparedStatement 负责执行预编译的SQL语句
CallableStatement 负责执行SQL存储过程
ResultSet接口 查询语句返回的结果集
1.Driver接口和DriverManager
a) DriverManager类用来建立和数据库的连接,以及管理JDBC驱动器,一下方法
i. registerDriver(Driver) 在DriverManager注册JDBC驱动器
ii. getConnection(String url,String user,String pwd):建立和数据库的连接,并返回表示数据库连接到Connection对象
iii.setLoginTimeOut(inseconds) 设定连接数据超时时间
iv. setLogWriter(PrintWriter out) 设定数据JDBC日志的PrintWriter对象
b) Connection接口
Connection代表Java程序和数据库的连接,主要方法如下
i. getMetaDat() 返回表示数据库的元数据的DatabaseMetaData对象.
ii. createStatement 创建并返回Statement对象
iii.prepareStatement(Stringsql) :创建并返回PreparedStatemen对象
c) Statement接口
Statement接口主要提供了执行SQL语句的方法
i. Execute(String sql) 执行SQL语句,返回一个boolean类型表示是否有查询结果如果有则使用getResultSet()方法获得这一查询结果
ii. executeUpdate(String sql) 执行SQL的insert,update和delete语句,返回一个int类型的值,表示数据库中受该SQL语句影响的记录的数目.
iii.executeQuery(Stringsql) 执行SQL的select语句.返回一个ResultSet对象
d) PreparedStatement
PreparedStatement继承了Statement.可以进行格式化的执行sql语句
在SQL语句中使用"?"作为占位符,然后使用此对象的setXX方法给占位符依次赋值.
e) ResultSet接口表示select查询语句得到的结果集.
使用next()方法去除结果集中的一行数据然后使用下列方法去除数据
i. getXXX(int columnIndex)返回指定字段的XXX类型值,columnIndex字段的索引位置
ii. getXXX(String columnName)返回指定字段的XXX类型的值,参数columnName代表字段的名
f) ResultSetMetaData
ResultSet的元数据.使用ResultSet.getMetaData()方法获得
i. getColumnCount():返回结果集包含的列数.
ii. getColumnLable(int i) 返回第i列的字段名字.
iii.getColumnType(inti) 返回结果第i列的字段的SQL类型.
iv. getTables(String catalog,String schemaPattern,StringtableNamePattern,String[] types) 返回数据库中符合参数给定条件的所有表
a) Catalog:指定表所在的目录.
b) schemaPattern:表锁在的Schema
c) tableNamePattern,匹配的字符串模式
d) Types 指定表的类型
v. getMaxConnections 返回数据库允许建立的连接的最大数目
vi. getMaxStatements 返回最大Statement对象数目
g) SQLException异常类
i. getErrorCode() 返回数据库系统提供的错误编码.
ii. getSQLState() 返回系统库系统提供的错误状态.
2.JDBC 使用步骤
a) 首先在网上下载数据区的驱动器.jar放入classpath中
b) 使用Calss.forName("包名.XXXXDriver")加载JDBC驱动器
c) 使用 DriverManager.registerDriver注册驱动器
d) 建立数据库的连接Connectioncon=DriverManager.getConnection(url,user,pwd)
Url的一般形式为:jdbc:drivertype:driversubtype://paramenters
例如Oracle jdbc:oracle:thin:@localhost:1521:sid
SQLServer:jdbc:microsoft:sqlserver:localhost:1433;DatabaseName=XX
MySQL:jdbc:mysql://localhost:3306/库名
e)创建Statment对象.Statment stm=con.createStatment()
f)执行SQL语句
g)遍历ResultSet对象
h)依次关闭ResultSet,Statment和Connection对像,按照此顺序
E和F步可以使用PreparedStatement对象代替查询
3.处理字符编码的转换
将GB2312转换为ISP-8859-1
String name=newString("小王".getBytes("GB2312"),"ISO-8859-1")
4.管理onnection,Statement,ResultSet对象的生命周期
a)Statment的最大数量
使用DatabaseMetaData.getMaxStatement方法获得
5.输出JDBC日志
默认状态下JDBC不会输出任何日志信息.只要通过DriverManager的静态setLogWriter方法设置日志输出地就可以.
6.调用存储过程
a)使用CallableStatement接口执行,Connection的perpareCall方法创建一个CallableStatement对象.此对象可以使用占位符?
7.控制事物
a) 使用Connection的setAutoCommit(bool)设置是否自动提交事物
b) commit()提交事物rollback()回滚
c) 保存点:SavepointsetSavepoint(String name)
d) 保存点:Savepoint setSavepoint()
e) 取消保存点:releaseSavepoint(Savepoint)
f) 滚回保存点:rollback(Savepoint)
8.批量更新:
a) 使用Statement接口的addBatch(String sql)加入语句
b) 使用executeBatch执行批量更新
c) 使用DatabaseMetaData接口库的supportsBatchUpdates()方法判断驱动器是否支持批量更新