你的位置:首页 > Java教程

[Java教程]JDBC简介


JDBC简介:

JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的简称。

他是sun公司和数据库开发商共同开发出来的独立于DBMS的应用程序接口,它为java程序员进行数据库编程提供了统一的API。

JDBC实际上有两组API,一组面向java应用程序开发人员,另一组是面向数据库驱动程序开发人员的,一般都是数据驱动程序开发人员利用后面一组API开发出供应程序开发人员使用的API。

 

我们需要熟悉包java.sql.*中定义的类(class),接口(interface),例外(expection),并且能够灵活使用他们,就能够发挥出JDBC强大的功能。

包java.sql.*中几个核心的类和接口:

① java.sql.DriverManager用来加载不同数据库厂商的JDBC驱动,并为创建新的数据库连接提供支持

② java.sql.Driver指定数据库的驱动入口,DriverManager将通过该类作为连接数据的参数

③ java.sql.Connection完成针对某指定数据库的连接功能

④ java.sql.Statement在一个已经建立的连接中,作为SQL语句执行的容器,它有两个子类:

  java.sql.CallableStatement 用于执行数据库中已经创建好的存储过程。

  java.sql.preparedStatement用于执行预编译的SQL语句。

⑤ java.sql.ResultSet用于存储执行特定SQL语句后返回的结果集。

 

一个查询数据库表的JDBC连接的基本过程如下:

① class.forName("com.mysql.jdbc.Driver").newInstance();

作用:加载驱动程序类,这里加载mysql的jdbc驱动

② connection conn = DriverManager.getConnection(url,"user","password");

作用:建立连接

③ Statement statement = conn.createStatement();

作用:通过这个连接连接sql语句执行的容器

④ String sql = "select * from table1";

作用:建立sql语句

⑤ ResultSet rs = statement.executeQuery(sql);

作用:利用前面的sql容器执行刚建立的sql语句,并把结构返回到结果集对象中。

⑥ 分析获取的查询结果

 

一个简单的实例如下:

 

 1 public class JDBCTest { 2   public static Connection getConnection() throws SQLException, 3   java.lang.ClassNotFoundException 4   { 5   //第一步:加载MySQL的JDBC的驱动 6   Class.forName("com.mysql.jdbc.Driver"); 7    8   //取得连接的url,能访问MySQL数据库的用户名,密码;jsj:数据库名 9   String url = "jdbc:mysql://localhost:3306/fuck";10   String username = "root";11   String password = "861113";12   13   //第二步:创建与MySQL数据库的连接类的实例14   Connection con = DriverManager.getConnection(url, username, password);15   return con;16   }17   18   19   public static void main(String args[]) {20   try21   {22   //第三步:获取连接类实例con,用con创建Statement对象类实例 sql_statement23   Connection con = getConnection();24   Statement sql_statement = con.createStatement();25   26   //如果同名数据库存在,删除27   //sql_statement.executeUpdate("drop table if exists student");28   //执行了一个sql语句生成了一个名为student的表29   //sql_statement.executeUpdate("create table student (id int not null auto_increment, name varchar(20) not null default 'name', math int not null default 60, primary key (id) ); ");30   31   //向person表中插入数据32   sql_statement.executeUpdate("insert person values(3, 'liying', 98)");33   sql_statement.executeUpdate("insert person values(4, 'jiangshan', 88)");34   sql_statement.executeUpdate("insert person values(5, 'wangjiawu', 78)");35   sql_statement.executeUpdate("insert person values(6, 'duchangfeng', 100)");36   37   //第四步:执行查询,用ResultSet类的对象,返回查询的结果38   String query = "select * from person";39   ResultSet result = sql_statement.executeQuery(query);40   41   //显示数据中person表中的内容:42   System.out.println("person表中的数据如下:");43   System.out.println("------------------------");44   System.out.println("序号" + " " + "姓名" + " " + "分数");45   System.out.println("------------------------");46   47   //对获得的查询结果进行处理,对Result类的对象进行操作48   while (result.next())49   {50   int number = result.getInt("number");51   String name = result.getString("name");52   String mathsorce = result.getString("mathsorce");53   54   //取得数据库中的数据55   System.out.println(" " + number + " " + name + " " + mathsorce);56   }57   58   //关闭连接和声明59   sql_statement.close();60   con.close();61   62   } catch(java.lang.ClassNotFoundException e) {63   System.err.print("ClassNotFoundException");64   System.err.println(e.getMessage());65   } catch (SQLException ex) {66   System.err.println("SQLException: " + ex.getMessage());67   }68   }69   70   }