一、DriverManager类
DriverManager类用来管理数据库中所有的驱动程序,它是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。在使用java操作数据库之前,首先需要加载驱动程序,java中使用Class类的静态方法forName(String className)加载要连接的数据库的驱动程序。
加载数据库驱动程序
- MySQL——Class.forName(“com.mysql.jdbc.Driver”);
- Oraclel——Class.forNmae(“oracle.jdbc.driver.OracleDriver”);
- SQL Server2000——Class.forNmae(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
- SQL Server2005——Class.forNmae(“com.microsoft.sql.jdbc.SQLServerDriver”);
DriverManager类的常用方法
- getConnection(String url,String user,String
password)——指定3个入口参数(分别是连接数据库的URL、用户名、密码)来获取与数据库的连接 - setLoginTimeout()——获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位
- println(String message)——将一条信息打印到当前JDBC日志流中
示例用DriverManager获取本地MySQL数据库连接:
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","password");
//127.0.0.1表示本地IP地址,3306是MySQL的默认端口,test是数据库名称
二、Connection接口
Connection接口代表与特定的数据库的连接,常用方法如下
Connection接口的常用方法
- createStatement()——创建statememt对象
- createStatement(int resultSetType,int resultSetConcurrency)——创建一个statement对象,该对象将生成具有给定类型、并发性和可保存性的ResultSet对象
- preparedStatement()——创建一个预处理对象
- prepareCall(String sql)——创建一个Callablestatement对象来调用数据库存储过程
- isReadOnly()——查看当前connection对象的读取模式是否是只读模式
- setReadOnly()——设置当前connection对象的读写模式,默认为非只读模式
- commit()——使所以上一次提交/回滚后进行的更改成为持久更改,并释放此connection对象当前所持有的所有数据库锁
- roolback()——取消在当前事务中进行的所有更改,并释放此Connection对象当前所持有的所有数据库锁
- close()——立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放
示例使用Connection对象连接MySQL数据库:
Connection con;//声明connection对象
//加载数据库驱动
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
//通过访问数据库的URL获取数据库连接对象
try{
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root");
}catch(SQLException e){
e.printStackTrace();
}
三、Statement接口
Statement接口用于在已经建立连接的基础上向数据库发送SQL语句,其常用的方法如下:
Statement接口中常用的方法
- execute(String sql)——执行静态的SELECT语句,该语句可能返回多个结果集
- executeQuery(String sql)——执行给定的SQL语句,该语句返回单个ResultSet对象
- clearBatch()——清空此statement对象的当前SQL命令列表
- executeBatch()——将一批命令提交给数据库执行,如果全部命令执行成功,则返回更新计数组成的数组。数组元素的排列与SQL语句的添加顺序对应
- addBatch(String sql)——将给定的SQL命令添加到此Statement对象的当前命令列表中,如果驱动程序不支持批量处理,将抛出异常
- close()——释放Statement占用的数据库和JDBC资源
示例使用连接数据库对象con的createStatement()方法创建statement对象sql:
try{
Statement stmt=con.createStatement();
}catch(SQLException e){
e.printStackTrace();
}
四、PreparedStatement接口
PreparedStatement接口继承自Statement接口,用来执行动态的SQL语句,其常用的方法如下:
PreparedStatement接口的常用方法:
- setInt(int index,int k)——将指定位置的参数设置为int值
- setFloat(int index,float f)——将指定位置的参数设置为float值
- setLong(int index,long l)——将指定位置的参数设置为long值
- setDouble(int index,double d)——将指定位置的参数设置为double值
- setBoolean(int index,boolean b)——将指定位置的参数设置为boolean值
- setDate(int index,date date)——将指定位置的参数设置为date值
- executeQuery()——在此PreparedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象
- setString(int index,String s)——将指定位置的参数设置为对应的String值
- setNull(int index,int sqlType)——将指定位置的参数设置为SQL NULL
- executeUpate()——执行前面包含的参数的动态 INSERT,UPDATE或DELETE语句
- clearParameters()——清楚当前所有参数的值
示例使用连接数据库对象con的prepareStatement()方法创建preparestatement对象sql:
PrepareStatement ps=con.prepareStatement("select * from tb_stu where name=?");
ps.setString(1,"小强");//将sql中的第一个问号的值设置为“小强”