Java数据库编程java.sql包JDBC简介JDBC(JavaDatabaseConnectivity),设计目标是为Java语言提供访问数据库的能力。实际上就是执行sql语言的javaAPI。JDBC核心API定义在java.sql包。JDBC使得向各种关系的数据库发送sql语句成为一件很容易的事,无须为不同种的数据可设计不同种的程序。JDBC简介JDBC所采用的这种数据库访问机制使得JDBC驱动程序管理器以及底层的数据库驱动程序对于开发人员来说是透明的。对于开发人员来说,访问不同类型的数据库时使用的是同一套JDBCAPI。这种机制还有另一个重要的意义:当有新类型的数据库出现时,只要该数据库的生产厂商提供相应的JDBC驱动程序,已有的Java应用程序不用做任何修改。JDBCAPIsjava.sql包中包含用于以下方面的API:通过DriverManager实用程序建立与驱动程序的连接DriverManager类:建立与驱动程序的连接Driver接口:提供用来注册和连接基于JDBC技术(“JDBC驱动程序”)的驱动程序的API,通常仅由DriverManager类使用DriverPropertyInfo类:提供JDBC驱动程序的属性,不是供一般用户使用的向数据库发送SQL语句Connection接口:提供创建语句以及管理连接及其属性的方法Statement:用于发送基本SQL语句PreparedStatement:用于发送准备好的语句或基本SQL语句(派生自Statement)CallableStatement:用于调用数据库存储过程(派生自PreparedStatement)检索和更新查询的结果ResultSet接口JDBC编程过程:五步DriverManager:驱动程序注册。jdbcUrl:获得数据库连接。创建SQL操作对象Statement(普通SQL操作),PreparedStatement(预编译SQL操作),ResultSet:处理结果集。关闭操作。第一步:JDBC驱动程序加载JDBC驱动程序注册。有三种方式:•通过Class.forName(…)try{Class.forName(“COM.cloudscape.core.JDBCDriver”);}catch(ClassNotFoundExceptione){}•*创建Driver对象。Driverd=newsun.jdbc.odbc.JdbcOdbcDriver();•*通过系统属性jdbc.driversSystem.getProperties().put(“jdbc.drivers”,“DriverName1”);!不同的驱动程序,驱动程序名称以及子协议名称是可以不一样的。在随驱动程序提供的文档中能够找到具体使用方法。第二步:建立数据库连接要想对数据库进行访问,必须先和数据库建立连接。建立一个数据库连接总是需要两个步骤:l、载入驱动程序Class.forName(驱动程序名称);2、建立连接Connectioncon=DriverManager.getConnection(jdbcurl,“用户名称,用户密码);创建数据库连接DriverManager是JDBC的管理层,作用于用户和驱动程序之间。它可以跟踪驱动程序,并在驱动程序和数据库之间建立连接。ConnectiongetConnection()是其最重要的方法。其他的方法还有:getDriver();getDrivers();registerDriver()等。创建数据库连接通过jdbcUrl指定某个数据源:jdbc:subprotocol:subnamejdbc访问的专有协议,必须是jdbc。子协议是用来标识一个JDBC驱动器,在DriverManager创建连接的时候根据subprotocol来顺序选择使用JDBC驱动程序,最后连接请求由Driver.connect方法来处理。第三部分是子名字,它具体于驱动程序,是该驱动程序定位特定的数据库的连接串。常见的例子jdbc:odbc:testjdbc:oracle:thin:@site:port:sidjdbc:microsoft:sqlserver://127.0.0.1:1433使用JDBC/ODBC桥接驱动程序使用MSAccess建立一个名为bookTest.mdb的数据库,该数据库中有一张表bookInfo使用ODBC管理工具为bookTest.mdb的建立一个名为Book的数据源。设定好访问该数据源的用户名称和密码(本例中分别设定为admin和xyz)。(1)载入驱动程序使用JDBC/ODBC桥接驱动程序,该驱动程序的名称为“sun.jdbc.odbc.JdbcOdbcDriver”,使用下面的语句将载入JDBC/ODBC桥接驱动程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(2)建立连接使用下面的语句建立一个和数据库的连接:Connectioncon=DriverManager.getConnection(jdbc:odbc:Book,admin,xyz);JDBC/ODBC桥连接Access的硬件设置打开控制面板,选中管理工具。如图JDBC/ODBC桥连接Access的硬件设置打开管理工具,选中(ODBC)数据源JDBC/ODBC桥连接Access的硬件设置打开数据源管理器,选择系统DNS,并单击‘添加’按钮。JDBC/ODBC桥连接Access的硬件设置选中DriverdoMicrosoftAccess(*mdb)JDBC/ODBC桥连接Access的硬件设置在ODBCMicrosoftAccess安装界面中,填写数据源(如Book),并选择数据库,选好过后如图,单击确定,完成了设置。JDBC/ODBC桥连接SQL的硬件设置在创建数据源界面中,选择SQLServer并单击‘完成’按钮。JDBC/ODBC桥连接SQL的硬件设置在创建到SQLServer的数据源界面中,命名数据源(如book),注意:服务器后一定要选择LocalJDBC/ODBC桥连接SQL的硬件设置在创建SQLServer的新数据源中选择如下图JDBC/ODBC桥连接SQL的硬件设置在创建到SQLServer的新数据源界面中选择所需数据库(如BookTest)单击‘下一步’如图JDBC/ODBC桥连接SQL的硬件设置在创建到SQLServer的新数据源界面中设置如下,单击‘完成’JDBC/ODBC桥连接SQL的硬件设置在ODBCMicrosoftSQLServer安装界面中单击‘测试数据源’按钮,如果出现右图测试成功界面,则单击‘完成’结束设置例JdbcOdbc.javaimportjava.sql.*;publicclassJdbcOdbc{publicstaticvoidmain(String[]args){try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:odbc:Book,admin,abc);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(select*frombookInfo);while(rs.next()){System.out.println(rs.getString(1)++rs.getString(2)++rs.getFloat(3)++rs.getString(4));}rs.close();stmt.close();con.close();}catch(Exceptione){e.printStackTrace();}}}使用JDBC驱动程序如何使用JDBC驱动程序直接和运行在MSSQLSERVER2000服务器上的数据库建立连接先在MSSQLSERVER2000上建立一个名为BookTest的数据库,并且在该数据库中创建一个名为bookInfo的表。使用企业管理器为该数据库创建一个合法的用户,用户名为admin,密码为xyz。下载并安装MSSQLSERVER2000的JDBC驱动程序。在安装目录的lib子目录中,会发现有三个.jar文件(msbase.jar、mssqlserver.jar及msutil.jar),就是MSSQLSERVER2000的JDBC驱动程序。注意:要使得Java应用程序能够访问MSSQLSERVER2000上的数据库,必须使得在类路径中能够找到这三个.jar文件。例Jdbc.javaimportjava.sql.*;publicclassJdbc{publicstaticvoidmain(String[]args){try{Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);Stringurl=jdbc:microsoft:sqlserver://127.0.0.1:1433;Connectioncon=DriverManager.getConnection(url,admin,xyz);con.setCatalog(“bookTest”);//数据库名称Statementstmt=con.createStatement();//StatementResultSetrs=stmt.executeQuery(“select*frombookInfo”);//表名while(rs.next()){System.out.println(rs.getString(1)++rs.getString(2)++rs.getFloat(3)++rs.getString(4));}rs.close();stmt.close();}catch(Exceptione){e.printStackTrace();}}}创建和执行SQL语句建立了特定的数据库连接之后,就可用该连接发送sql语句。Statement语句对象用来执行静态SQL语句,并返回执行结果。PreparedStatement执行动态SQL语句,预编译过,效率高,在执行的时候通过占位符匹配动态参数。*CallableStatement执行存储过程。Statement语句创建Statement对象Connectioncon=DriverManager.getConnection(jdbc:odbc:Book,admin,abc);Connection的方法createStatement()可以创建Statement对象。Statementstmt=con.createStatement();Statement语句(静态)使用Statement执行语句:executeQuery()用于产生单个结果集,例如select语句。ResultSetrs=stmt.executeQuery(select*frombookInfo);executeUpdate()用于执行insert、update、delete、createtable、droptable。返回值为一个整数,指受影响的行数(即更新计数)。executeBatch()用来批量执行SQL语句Statement对象将由java垃圾收集程序自动关闭,最好显示关闭。stmt.close();结果集ResultSet(1)执行SELECT语句,会返回结果集,结果集可以为空。结果集是二维数据表,有字段和记录构成,包含了符合sql语句中条件的所有行。1.x版本JDBC的结果集是单向集,2.0以后是双向记录集。结果集维护指向其当前数据行的游标cursor。每调用一次next(),游标下移一行,最初位于第一行。举例table1ABC123Dalian008