jdbc的基本操作.pdf





《jdbc的基本操作.pdf》由会员分享,可在线阅读,更多相关《jdbc的基本操作.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 章 jdbc的基本操作jdbc 如何配置,如何连接数据,如何查询数据,如何更新数据,如何关闭连接释放资源。我们例子中使用的是jdk 内部默认提供的 jdbc:odbc驱动,此驱动可以与windows平台的 odbc进行桥接,连接odbc 上已配置好的数据库。1.1.使用 access 数据库注意如果你以前没有使用过数据库,或者不熟悉如何使用access 数据库,那么请继续阅读,否则请跳过此章继续下面的内容。创建一个 access 数据库需要一下步骤。选择:开始 -设置-控制面板。选择:管理工具。选择:数据源(ODBC)。进入管理数据库(ODBC)的界面,选择添加。选择 Microsof
2、t Access Driver,点击完成。在这里输入数据库的名称database,然后点击创建。输入数据库文件的名称,选择生成到c:盘根目录下,点击确定。提示数据库创建成功。可以看到数据库已经创建成功,可以看到生成后数据库文件的完整路径,点击确定。这是我们可以看到名叫database 的数据数据库已经在列表中了,点击确定完成整个步骤。生成到 c:盘根目录下的数据库文件大概像这个这样。有两种方法可以连接到database.mdb 数据库。1.可以使用我们在 odbc 中定义的数据库名称database,通过 odbc 获得数据库连接。2.可以通过 Driver=Microsoft Access
3、Driver(*.mdb);DBQ=c:database.mdb的写法,通过文件路径获得数据库连接。第一种方式只要定义了odbc 中的数据库,不管实际数据库文件放到哪里都可以直接使用 odbc 中的名称直接连接。缺点是每次使用之前都要进入odbc 对数据源进行定义。第二种方式不需要进入odbc 设置,只要指定数据库文件的路径就可以连接。缺点如果数据库位置变动,就要修改连接代码。下面我们将使用 jdbc 操作新生成的 database.mdb 数据库。1.2.第一个 jdbc 程序import java.sql.DriverManager;import java.sql.Connection;p
4、ublicclass DbUtils publicstaticvoid main(String args)throws Exception /加载驱动 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/连接数据库的地址/String url=jdbc:odbc:database;String url=jdbc:odbc:Driver=Microsoft Access Driver(*.mdb);DBQ=database.mdb;Connection conn=null;try /创建与数据库的连接 conn=DriverManager.getConnec
5、tion(url);System.out.println(成功连接到数据库:+conn);catch(Exception ex)System.out.println(连接失败:+ex);finally /关闭连接,释放资源if (conn!=null)conn.close();打开 01-02 目录可以看到如下内容。DbUtils.java是包含 jdbc 连接的程序,我们将使用 run.bat这个批处理脚本对它进行编译和运行,run.bat的主要内容如下:javac DbUtils.java java DbUtils 注意这里要特别注意相对路径的概念,如果我们使用 jdbc:odbc:Dri
6、ver=Microsoft Access Driver(*.mdb);DBQ=database.mdb 的连接方式,这里的 database.mdb就是指与 run.bat在同一个目录下。运行 run.bat运行 DbUtils.java得到如下结果。现在让我们来看看DbUtils.java做了什么。1.加载 jdbc-odbc 驱动。2./加载驱动3.Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);这个 sun.jdbc.odbc.JdbcOdbcDriver是一个 java 类,它是 jdk 自带的驱动,我们不需要添加其他库就可以使用。Class.f
7、orName()是固定用法,背诵即可。4.设置连接数据库的url 地址。5./连接数据库的地址6./String url=jdbc:odbc:database;7.String url=jdbc:odbc:Driver=Microsoft Access Driver(*.mdb);DBQ=database.mdb;因为我们刚刚设置了名叫database 的 odbc 数据源,使用第一种jdbc:odbc:database也可以连接成功。如果没有设置 odbc 数据源的情况下,就要用第二种指定具体文件路径的方式,这里连接的是当前目录下的database.mdb 文件。我们可以看到两个url 都分
8、成三段,中间用冒号(:)分隔。开头的 jdbc 是惯用写法,所有 jdbc 连接数据库的 url 地址都是以 jdbc:开头的。中间部分用来决定使用哪个驱动程序,这里写成jdbc:odbc:就会自动调用刚刚加载的 jdbc-odbc驱动程序,驱动程序会在加载的时候自动注册别名,使用时可以参考对应文档。最后部分是驱动程序需要的连接协议,连接地址,数据库名等信息,使用时需要参考对应的文档。8.使用 DriverManager 获得指定 url 的连接。9.try 10./创建与数据库的连接11.conn=DriverManager.getConnection(url);12.System.out.
9、println(成功连接到数据库:+conn);13.catch(Exception ex)14.System.out.println(连接失败:+ex);15.如果连接成功 DriverManager.getConnection()会返回一个 Connection对象,如果连接失败会抛出异常,使用trycatch()可以判断是否能够与数据库连接,连接成功的话我们直接打印出成功信息。16.最后一步非常关键,一定要在使用之后关闭连接释放资源。17.finally 18./关闭连接,释放资源19.if (conn!=null)20.conn.close();21.22.为了确保在正常连接和出现异常
10、的情况下都执行关闭连接的代码,我们使用了 finally。记得先要判断 conn!=null,避免出现NullPointerException。注意一定要记得在使用完Connection 之后关闭连接,数据库连接需要承载大量的数据传输,它本事也是非常消耗资源的,数据库一般都有最大连接限制,当连接数过多超过限制的时候就会导致连接失败。如果我们没有调用conn.close()关闭连接,这个数据库连接就无法释放,即使你不再使用它,它也会一直占据着资源,最后就会超出最大连接数导致数据库无法响应。1.3.创建表,删除表使用数据库之前,我们首先需要创建表结构才能向表中添加数据,查询结果。为了便于使用,我们
11、将数据库配置,获取连接,关闭连接的代码封装到一个类中,DbUtils.java的代码如下。import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;publicclass DbUtils static try /加载驱动 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ex)throw newRuntimeException(load jdbc-odbc driver error.);
12、publicstatic Connection getConnection()throws SQLException /创建与数据库的连接returnDriverManager.getConnection(jdbc:odbc:Driver=Microsoft Access Driver(*.mdb);DBQ=database.mdb);publicstaticvoid close(Connection conn)try if (conn!=null)/关闭连接,释放资源 conn.close();catch(SQLException ex)/static叫做静态初始化块,我们依靠它在加载DbU
13、tils.java的同时加载jdbc-odbc 驱动。DbUtils.java提供两个 static方法,getConnection()获得数据库连接,close()则用来关闭连接。下一步,我们在 CreateTable.java中编写创建表的代码,需要使用如下的sql语句。createtable test(id integer,name varchar(100);sql 语句的含义是创建一个名叫test 的表,这个表包含两个字段,id 字段的类型是 integer(整数),name字段的类型是 varchar(100)(最大长度为 100的字符串)。CreateTable.java中使用 D
14、bUtils 来获得连接和关闭连接,代码如下。import java.sql.*;publicclass CreateTable publicstaticvoid main(String args)throws Exception Connection conn=DbUtils.getConnection();Statement state=null;try String sql=create table test(id integer,name varchar(100);state=conn.createStatement();state.executeUpdate(sql);catch(E
15、xception ex)ex.printStackTrace();finally if (state!=null)state.close();DbUtils.close(conn);Connection 的部分与上例相同,咱们不再赘述,集中注意在Statement 的部分。执行 sql 语句创建表结构需要两步,第一步执行conn.createStatement()创建一个 Statement,第二步执行 state.executeUpdate(sql)执行 sql 语句,经过这两步数据库里就会多了一张test表,如果安装了 visual studio中的 access管理器,就可以打开data
16、base.mdb 看到如下结果。一个 Connection 可以创建多个 Statement,当我们用用这些Statement 执行 sql语句时,sql 语句会在处理后通过Connection 发送给数据库执行,设计良好的jdbc 驱动会能够保证conn 关闭的时候,同时释放依附于这个连接的所有Statement,但是为了以防万一,我们还是建议调用state.close()手工关闭Statement,因为这些 Statement 也会消耗连接资源。finally里还要注意关闭的顺序,按照Statement-Connection的顺序关闭,如果先关闭 Connection 再操作 Statem
17、ent 可能会引发异常。删除表的操作与创建表操作极为相似,实际上只有 sql 语句不同而已,删除表的sql 语句如下:drop table test 删除表的代码见 01-03/DropTable.java,可以执行 dropTable.bat进行编译和执行。注意重复建表或者删除不存在的表,都会抛出异常导致操作失败,大家可以多执行几次 createTable.bat和 dropTable.bat看一下效果。1.4.插入,修改,删除数据实际工作时表结构都是建立好的,我们只需要获取数据库连接,进行CRUD 操作(Create 创建、Read读取、Update 更新和 Delete 删除)。我们先把
18、 Create 创建、Update 更新和 Delete 删除挑出来说说,这三个操作都是修改数据库中的数据,同属于更新(update)操作。Read读取则是从数据库中搜索已有数据,属于查询(query)操作,我们后面单独讲解。先看看 Insert.java中的代码。import java.sql.*;publicclass Insert publicstaticvoid main(String args)throws Exception Connection conn=DbUtils.getConnection();Statement state=null;try String sql=ins
19、ert into test(id,name)values(1,lingirl);state=conn.createStatement();state.executeUpdate(sql);catch(Exception ex)ex.printStackTrace();finally if (state!=null)state.close();DbUtils.close(conn);这里也是创建 Statement 然后执行 executeUpdate(),与 CreateTable.java,DropTable.java不同的地方就只有sql 语句。insertinto test(id,nam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jdbc 基本 操作

限制150内