首页 > 代码库 > JDBC连接简介
JDBC连接简介
Connection | 连接对象,用于与数据库取得连接 |
Driver | 用于创建连接(Connection)对象 |
Statement | 语句对象,用于执行SQL语句,并将数据检索到结果集(ResultSet)对象中 |
PreparedStatement | 预编译语句对象,用于执行预编译的SQL语句,执行效率比Statement高 |
CallableStatement | 存储过程语句对象,用于调用执行存储过程 |
ResultSet | 结果集对象,包含执行SQL语句后返回的数据的集合 |
static Class forName(String className) throws ClassNotFoundException | 将由className指定完整名称的类加载到JVM中,如果加载失败,将抛出异常,必须捕捉 |
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载并注册驱动程序
成功加载驱动后,必须使用DriverManager类的静态方法getConnection来获得连接对象;
方 法 原 型 | 说 明 |
static Connection getConnection (String url, String user, String password) throws SQLException | 参数url是连接字符串,参数user是数据库用户名,参数password是登录口令,成功连接到数据库返回Connection对象,连接失败则抛出SQLException异常,必须捕捉 |
Connection con =DriverManager.getConnection("sun.jdbc.odbc.JdbcOdbcDriver", "scott",orcl"");
一旦成功连接到数据库,获得Connection对象后,必须通过Connection对象的createStatement方法来创建语句对象,才可以执行SQL语句;
方 法 原 型 | 说 明 |
Statement createStatement() throws SQLException | 成功创建返回Statement对象,否则抛出SQLException异常,必须捕捉 |
如:Statement sta = con.createStatement();
使用语句对象来执行SQL语句,有两种情况:
一种是执行DELETE、UPDATE和INSERT之类的数据库操作语句(DML),这样的语句没有数据结果返回,使用Statement对象的executeUpdate方法执行;
方 法 原 型 | 说 明 |
int executeUpdate(String sql) throws SQLException | 参数sql是要执行的SQL语句,执行成功返回受影响的行数,执行失败则抛出SQLException异常,必须捕捉 |
如:sta.executeUpdate("INSERT INTO Friends VALUES(‘田七‘, ‘重庆‘, 456712, ‘2003-2-25‘, 7500)");
另一种是执行SELECT这样的数据查询语句(DQL),这样的语句将从数据库中获得所需的数据,使用Statement对象的executeQuery 方法执行;
方 法 原 型 | 说 明 |
ResultSet executeQuery(String sql) throws SQLException | 参数sql是要执行的SQL语句,查询成功返回包含有结果数据的ResultSet对象,否则抛出SQLException异常,必须捕捉 |
如:ResultSet rs =sta.executeQuery("SELECT * FROM Friend");
使用Statement对象的executeQuery方法成功执行SELECT语句后,将返回一个包含有结果数据的ResultSet对象,要从该对象中获取数据,将使用到如下方法:
方 法 原 型 | 说 明 |
boolean next() throws SQLException | 将结果集游标往下移动一行,如果已经到达结果集最后,将会返回false,有可能抛异常,必须捕捉 |
X getX(String columnName) throws SQLException | 获得某个字段的值,X是指具体的数据类型,视数据库表中字段的具体情况而定,该方法有一组,并且每个都有两种重载方法,一种是以字段名称为参数,另一种是以字段索引为参数(字段索引从1开始),有可能抛异常,必须捕捉 |
X getX(int columnIndex) throws SQLException 当对数据库的操作结束后,应当将所有已经被打开的资源关闭,否则将会造成资源泄漏; Connection对象、Statement对象和ResultSet对象都有执行关闭的close方法; 函数原型都是:void close() throws SQLException –如: rs.close(); //关闭ResultSet对象 sta.close(); //关闭Statement对象 con.close(); //关闭Connection对象 有可能抛出SQLException异常,必须捕捉; 请注意关闭的顺序,最后打开的资源最先关闭,最先打开的资源最后关闭。
|
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Testjdbc {
public static void main(String[] args) throws SQLException {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");//加载并注册驱动程序
}catch(ClassNotFoundException e)//加载错误,捕获异常
{
System.out.println("加载驱动失败");
}
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","tiger"); //创建Connection连接对象
Statement sta = con.createStatement(); //创建语句对象
ResultSet rs=sta.executeQuery("select * from emp"); //4,执行语句对象,如果查询,要把查询结果 放到结果集当中
while(rs.next()){ //当没有到结尾的时候
System.out.print(rs.getInt("empno")+" ");//用Get方法获取字段的值
System.out.print(rs.getString("ename")+" ");
System.out.print(rs.getDouble("sal"));
System.out.println();
}
//5,关闭资源
rs.close();
sta.close();
con.close();
}
}