Java程序与数据库连接
一个网络关系数据库应用系统是三层次结构:客户机与服务器用网络连接,客户端按通信协议与服务器端数据库程序通信;数据库服务程序通过 SQL 命令与数据库管理系统通信。
Java 程序连库有两种:JDBC-ODBC 桥,以及纯 Java 的 JDBC 驱动。JDBC(Java DataBase Connectivity)由一组 Java 类和接口组成,能做三件事:建立连接、发送 SQL、处理返回结果。
一、JDBC-ODBC 桥
通信过程:应用程序向 ODBC 驱动管理器发 API 调用 → 转成对 DBMS 的 ODBC 驱动调用 → DBMS 再转成操作系统的数据 I/O → 数据逐级返回。
编程前要设数据源。在 ODBC 中:打开控制面板管理工具。Windows XP:性能维护 → 管理工具 → 数据源(ODBC);Windows 2000:管理工具 → 数据源。打开后显示现有数据源名。选“用户 DSN”,点“添加”,选 Access(*.mdb) 点完成,键入数据源名并选一个数据库表。点数据库区域的“选择”。需要授权时点“高级”,设登录名和密码后确定。若还没有表,先建表。
数据源就是数据库。设好后还要建立 JDBC-ODBC 桥,程序才能发 SQL、处理结果。调用 Class.forName(String s) 加载驱动:
【例 13-7】方法 connectByJdbcOdbc() 按给定数据库 URL、用户名和密码连接,成功返回连接对象,失败返回空。
注意:JDK 8 已移除 JDBC-ODBC 桥(sun.jdbc.odbc.JdbcOdbcDriver),新项目请用纯 JDBC 驱动。
二、纯 Java JDBC 驱动
应用更广,但要下载对应驱动包,不同库加载的类名也不同。连接 SQL Server 可从 www.msdn.com 下载 msbase.jar、mssqlserver.jar、msutil.jar,放到 jdk\jre\lib\ext\ 或写入 CLASSPATH。连接 MySQL 用一个包:mysql-connector-java-3.1.11-bin.jar。
加载驱动有两种:把驱动类名加到 java.lang.System 属性 jdbc.drivers(冒号分隔的列表);或下载后在程序里 Class.forName():
数据库 URL 类似网络定位符,格式 subprotocol:subName://hostName:port/DatabaseName。subprotocol 是驱动支持的连接机制,subName 是该机制下的具体名称。例如(原文 Microsoft 大小写不统一,这里按常见写法):
该 URL 表示用 Microsoft 机制、SQL Server 驱动、1433 端口访问本机 ksinfo 库。建立连接用 DriverManager.getConnection()。
连接步骤
-
下载驱动包,如 mysql-connector-java-3.1.11-bin.jar -
Class.forName("com.mysql.jdbc.Driver") -
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", username, password)
【例 13-8】静态方法按 URL、用户名、密码连接,成功返回 Connection(原文方法名 conectByJdbc、DriverManage 为笔误,下面按正确 API 写出):
三、DriverManager 与 Connection
DriverManager 负责加载驱动、建立新连接。应用程序通常只用静态方法 getConnection(String url, String username, String password)。桥接下 url 形如 jdbc:<连接机制>:<ODBC 数据源名>。
Connection 表示与特定数据库的连接,对库的操作都在这个对象上进行。主要方法:
四、Statement 与 ResultSet
数据库编程要点是嵌入 SQL。先拿到 Connection,再用 createStatement() 创建语句对象:
调用 executeQuery() 执行查询,结果放进 ResultSet,例如 ResultSet rs = sql.executeQuery("SELECT * FROM ksInfo")。ResultSet 实际是查询结果表,一行一条记录。隐含游标,一次只能看到当前行,next() 取下一行。用列名或从 1 开始的位置索引调用 getXXX():
五、可滚动结果集
要前后移动或定位到指定记录,创建 Statement 时增加两个参数:
例如只读、可滚动:
可滚动集上常用导航:
| 类 / 接口 | 职责 |
|---|---|
| DriverManager | 加载驱动,getConnection 得到连接 |
| Connection | 代表一次会话:建 Statement、提交/回滚、关闭 |
| Statement | 在指定连接上执行 SQL |
| ResultSet | 查询结果表 + 游标,getXXX / next / 滚动定位 |
一句话总结:连库先加载驱动再 getConnection;发 SQL 用 Statement,读结果用 ResultSet 游标。桥接已过时,生产环境用各库自己的 JDBC 驱动。
转载请注明来源:Java程序与数据库连接







