首页 > 代码库 > JDBC连接简介

JDBC连接简介

Connection

连接对象,用于与数据库取得连接

Driver

用于创建连接(Connection)对象

Statement

语句对象,用于执行SQL语句,并将数据检索到结果集(ResultSet)对象中

PreparedStatement

预编译语句对象,用于执行预编译的SQL语句,执行效率比Statement高

CallableStatement

存储过程语句对象,用于调用执行存储过程

ResultSet

结果集对象,包含执行SQL语句后返回的数据的集合

Unnamed QQ Screenshot20140507192155

static Class forName(String className)

throws ClassNotFoundException

将由className指定完整名称的类加载到JVM中,如果加载失败,将抛出异常,必须捕捉

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //加载并注册驱动程序

art2EF7成功加载驱动后,必须使用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"");

art2EF7一旦成功连接到数据库,获得Connection对象后,必须通过Connection对象的createStatement方法来创建语句对象,才可以执行SQL语句

方 法 原 型

说 明

Statement createStatement()

throws SQLException

成功创建返回Statement对象,否则抛出SQLException异常,必须捕捉

art7544如:Statement sta = con.createStatement();

artB571使用语句对象来执行SQL语句,有两种情况:

artB572一种是执行DELETE、UPDATE和INSERT之类的数据库操作语句(DML),这样的语句没有数据结果返回,使用Statement对象的executeUpdate方法执行;

方 法 原 型

说 明

int executeUpdate(String sql)

throws SQLException

参数sql是要执行的SQL语句,执行成功返回受影响的行数,执行失败则抛出SQLException异常,必须捕捉

art2BBC如:sta.executeUpdate("INSERT INTO Friends VALUES(‘田七‘, ‘重庆‘, 456712, ‘2003-2-25‘, 7500)");

art981A另一种是执行SELECT这样的数据查询语句(DQL),这样的语句将从数据库中获得所需的数据,使用Statement对象的executeQuery 方法执行;

方 法 原 型

说 明

ResultSet executeQuery(String sql)

throws SQLException

参数sql是要执行的SQL语句,查询成功返回包含有结果数据的ResultSet对象,否则抛出SQLException异常,必须捕捉

art4F8A如:ResultSet rs =sta.executeQuery("SELECT * FROM Friend");

artF22A使用Statement对象的executeQuery方法成功执行SELECT语句后,将返回一个包含有结果数据的ResultSet对象,要从该对象中获取数据,将使用到如下方法:

方 法 原 型

说 明

boolean next()

throws SQLException

将结果集游标往下移动一行,如果已经到达结果集最后,将会返回false,有可能抛异常,必须捕捉

X getX(String columnName)

throws SQLException

获得某个字段的值,X是指具体的数据类型,视数据库表中字段的具体情况而定,该方法有一组,并且每个都有两种重载方法,一种是以字段名称为参数,另一种是以字段索引为参数(字段索引从1开始),有可能抛异常,必须捕捉

X getX(int columnIndex)

throws SQLException

art74CF当对数据库的操作结束后,应当将所有已经被打开的资源关闭,否则将会造成资源泄漏;

art74D0Connection对象、Statement对象和ResultSet对象都有执行关闭的close方法;

art74D1函数原型都是:void close() throws SQLException

–如:

rs.close(); //关闭ResultSet对象

sta.close(); //关闭Statement对象

con.close(); //关闭Connection对象

art754F有可能抛出SQLException异常,必须捕捉;

art7550请注意关闭的顺序,最后打开的资源最先关闭,最先打开的资源最后关闭。

 

 

 

 

 

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();
           
    }
}