(1) DriverManager类:DriverManager类代表驱动程序管理器,提供了一批static方法负责驱动程序的调入以及得到特定的数据库连接。这个类中的静态方法如下:
向驱动程序管理器注册一个驱动程序。
删除驱动程序管理器中的一个驱动程序。
获得一个特定的数据库连接,url与上面的格式一样。
获得一个数据库连接,并且指定用户名和密码。
(2) Driver接口:接口代表一个驱动程序的对象。
注册一个odbc的驱动器
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
public static ClassforName (String className) throws ClassNotFoundException
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Oracle驱动:
Class.forName(“oracle.jdbc.driver.OracleDriver”) ;
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
import oracle.jdbc.driver.*;
连接数据库
//连接odbc
Connection con1 = DriverManager.getConnection(“jdbc:odbc:school”);
//连接Oracle
String url = “jdbc:oracle:thin:@localhost:1521:myoracle”;
String userName = “scott”;
String password = “tiger”;
Connection conn3 = DriverManager.getConnection(url,userName,password);
得到SQL语句容器,并向数据库发送SQL语句
获得SQL语句容器的方法定义在Connection接口中,通过Connection接口我们
可以得到三种类型的容器,如下所示:
(1) public Statement createStatement()throws SQLException
获得SQL语句的容器结果不可滚动不可更新。
(2)public PreparedStatementpreparedStatement(String sql) throws SQLException
获得预编译的SQL语句容器,可以出现?占位符,然后设置,只能是in参数。
(3) public CallableStatementpreparedCall(String sql) throws SQLException
获得调用数据库存储过程或函数的一个对象,占位符?可以是in参数也可以
是out参数。
查看类库掌握3种SQL容器中的方法:后面章节还要详细讲解,先了解一下:
(1)Statement
(2)PreparedStatement
(3)CallableStatement
向数据库发送SQL语句:发送SQL语句在Statment接口中,如下所示:
(1)public intexecuteUpdate(String sql) throws SQLException
向数据库发送SQL语句,注意不能是select语句,返回结构应该是影响的行数。
(2)public ResultSetexcuteQuery(String sql) throws SQLException
向数据库发送select语句,返回结果集。
如:
try{
Statement stat = conn.createStatement();
String sql = “insetr into ……”//省略
int rows = stat .excuteUpdate(sql);
System.out.println(rows);
}
Catch(SQLException e){}
处理查询结果
通常对数据库操作最多的就是查询操作,使用executeQuery()方法发送查询语句并返回一个ResultSet对象。例如:
ResultSetrs = stmt.executeQuery(“select * from emp”);
ResultSet是一个以列组织的数据行,默认行指针在第一行前面的位置。
方法如下:
(1)booleannext() throws SQLException
(2)void close() throws SQLException
(3)不同的get方法,对应返回数据库中不同类型
下面是开发过程中经常要用到的遍历结果集常用的格式:
ResultSetrs = stat.executeQuery(“select * from student”);
while(rs.next()){
Stirng name = rs.getString(“stud_name”);
int id = rs.getInt(“stud_id”);
java.sql.Date birthday = rs.getDate(“stud_birthday”);
……
}
关闭数据库连接
由于数据库连接是一种非常宝贵的资源,所以在处理结束后要关闭连接,为此Connection对象提供了简单的close()方法关闭连接。
除了要关闭数据库连接,还要用close方法关闭所有的Statement和ResultSet对象。
代码实例如下:
try{
}
catch(SQLException e){……}
finally{
try{
if(conn!=null){
rs.close();
stat.close();
conn.close();
}
}
catch(SQLException e){……}
}
编写数据库连接的工具类
(1)准备属性文件或XML文件,在这两个文件中保存连接信息,如:
db.properties:
drivers=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:myoracle
username=scott
password=tiger
import java.io.*;
import java.sql.*;
import java.util.*;
public class DBUtil {
public static Connection getConnection(String fileName) {
Properties p = new Properties();
FileInputStream in = null;
try {
in = new FileInputStream(fileName);
p.load(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return createConnection(p);
}
private static Connection createConnection(Properties p) {
Connection conn = null;
String driver = p.getProperty("driver");
String url = p.getProperty("url");
String user = p.getProperty("user");
String password = p.getProperty("password");
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
v事务处理的步骤:
(1)调用Connection的setAutoCommit方法将自动提交设为false;
(2)执行事务中的所有SQL语句;
(3)调用Connection的commit方法提交;
(4)catch语句中执行Connection的rollback方法。