Java程序设计实用教程_第11章_JDBC数据库操作_第1页
Java程序设计实用教程_第11章_JDBC数据库操作_第2页
Java程序设计实用教程_第11章_JDBC数据库操作_第3页
Java程序设计实用教程_第11章_JDBC数据库操作_第4页
Java程序设计实用教程_第11章_JDBC数据库操作_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1注意:开始用功了注意:开始用功了!2Java程序设计实用教程程序设计实用教程 第第11章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平JDBC数据库操作 3导导读读411.1 Microsoft Access Microsoft Access 数据库管理系统数据库管理系统 11.1.1 建立数据库建立数据库 建立一个名字为建立一个名字为shopshop的数据库。的数据库。操作步骤如下:操作步骤如下: 单击单击“开始开始”“”“所有程所有程序序”“”“Microsoft Access”Microsoft Access”,在 新 建 数 据 库 界 面 选

2、 择在 新 建 数 据 库 界 面 选 择 “ 空空AccessAccess数据库数据库”,然后命名、保,然后命名、保存新建的数据库,在这里我们命存新建的数据库,在这里我们命名 的 数 据 库 是名 的 数 据 库 是 s h o ps h o p , 保 存 在保 存 在C:ch11C:ch11中。中。 511.1.2 创建表创建表 在在shopshop数据库中创建名字为数据库中创建名字为goodsgoods的表。在的表。在shopshop管理管理的的“表表”的界面上选择的界面上选择“使用设计器创建表使用设计器创建表”,然后单,然后单击界面上的击界面上的“设计设计”菜单,将出现相应的建表界面

3、,我菜单,将出现相应的建表界面,我们建立的表是们建立的表是goodsgoods,该表的字段该表的字段( (属性属性) )为:为:number(文本文本) name(文本文本) madeTime(日期日期) price(数字,双精度数字,双精度) 在在shop管理的管理的“表表”的界面上,用鼠标双击已创建的界面上,用鼠标双击已创建的表可以为该表添加记录的表可以为该表添加记录。611.2 JDBCJDBC JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事: 与一个数据库建立连接。与一个数据库建立连接。 向数据库发送向数据库发送S

4、QLSQL语句。语句。 处理处理SQLSQL语句返回的结果。语句返回的结果。711.3 连接数据库连接数据库 11.3.1 连接方式的选择连接方式的选择 和数据库建立连接的常用两种方式是:建立和数据库建立连接的常用两种方式是:建立JDBCODBCJDBCODBC桥接桥接器和加载纯器和加载纯JavaJava数据库驱动程序。使用数据库驱动程序。使用JDBCODBCJDBCODBC桥接器方式的桥接器方式的机制是,应用程序只需建立机制是,应用程序只需建立JDBCJDBC和和ODBCODBC之间的连接,即所谓的建之间的连接,即所谓的建立立JDBCODBCJDBCODBC桥接器,而和数据库的连接由桥接器,

5、而和数据库的连接由ODBCODBC去完成。去完成。 使用使用JDBCODBC桥接器连接数据库的桥接器连接数据库的3个步骤个步骤建立JDBC-ODBC桥接器 创建ODBC数据源 和ODBC数据源建立连接811.3.2 建立建立JDBC-ODBCJDBC-ODBC桥接器桥接器 JDBC使用使用java.lang包中的包中的Class类建立类建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,必须捕获这个异桥接器。建立桥接器时可能发生异常,必须捕获这个异常,建立桥接器的代码是:常,建立桥接器的代码是:try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

6、catch(ClassNotFoundException e) System.out.println(e); 911.3.3 ODBCODBC数据源数据源 1 1创建、修改或删除数据源创建、修改或删除数据源 选择选择“控制面板控制面板”“”“管理工具管理工具”“”“ODBCODBC数据源数据源”(某些(某些window/window/xpxp系统,需选择系统,需选择“控制面板控制面板”“”“性能和维护性能和维护”“”“管管理工具理工具”“”“ODBCODBC数据源数据源”)。)。 双击双击ODBCODBC数据源图标,出现的界面显示了用户已有的数据源的数据源图标,出现的界面显示了用户已有的数据源

7、的名称。选择名称。选择“系统系统DSN”DSN”或或“用户用户DSN”DSN”,单击单击“添加添加”按钮,可按钮,可以创建新的数据源;单击以创建新的数据源;单击“配置配置”按钮,可以重新配置已有的数按钮,可以重新配置已有的数据源;单击据源;单击“删除删除”按钮,可以删除已有的数据源。按钮,可以删除已有的数据源。2 2为数据源选择驱动程序为数据源选择驱动程序 因为要访问因为要访问AccessAccess数据库数据库, ,选择选择Microsoft Acess Driver(*.mdb)。3 3数据源名称及对应数据库的所在位置数据源名称及对应数据库的所在位置 在在名称栏名称栏里为数据源起一个自己喜

8、欢的名字,这里我们起的里为数据源起一个自己喜欢的名字,这里我们起的名字是名字是myDatamyData。这个数据源就是指某个数据库。在这个数据源就是指某个数据库。在“数据库选择数据库选择”栏中选择一个数据库,这里我们选择的是栏中选择一个数据库,这里我们选择的是C:ch11下的下的shop.mdb数据库。数据库。 1011.3.4 建立连接建立连接 编写连接数据库代码不会出现数据库的名称,只能出现数编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。据源的名字。 首先使用首先使用java.java.sqlsql包中的包中的ConnectionConnection类类声明一个对象,然后声

9、明一个对象,然后再使用类再使用类DriverManagerDriverManager调用它的静态方法调用它的静态方法getConnectiongetConnection创建这创建这个连接对象,个连接对象,建立连接时应捕获建立连接时应捕获SQLException异常异常 :try Connection con= DriverManager.getConnection( jdbc:odbc:数据源名字数据源名字 , login name , password ); catch(SQLException e) 例例11-1 Example11_1.java 1111.4 查询操作查询操作 对一个数据

10、库中表进行查询操作的具体步骤如下。对一个数据库中表进行查询操作的具体步骤如下。 1 1向数据库发送向数据库发送SQLSQL查询语句查询语句 try Statement sql=con.createStatement(); catch(SQLException e ) 2处理查询结果处理查询结果 ResultSet rs=sql.executeQuery(SELECT * FROM employee); 表表11.1给了出了给了出了ResultSet对象的若干方法。对象的若干方法。注:无论字段是何种属性,总可以使用注:无论字段是何种属性,总可以使用 getString(int columnInd

11、ex)或或getString(String columnName)方法方法返回字段值的串表示。返回字段值的串表示。注:当使用注:当使用ResultSet的的getXXX方法查看一行记录时,不可以颠方法查看一行记录时,不可以颠倒字段的顺序,例如,不可以倒字段的顺序,例如,不可以 rs.getDouble(4); rs.getDate(3) 12表表11.1 11.1 ResultSetResultSet对象的若干方法对象的若干方法1311.4.1 顺序查询顺序查询 通过使用通过使用JDBC提供的提供的API,可以在查询之前知道表可以在查询之前知道表中的字段的个数和名字,步骤如下:中的字段的个数和

12、名字,步骤如下: 1.连接对象con调用getMetaData()方法可以返回一个DatabaseMetaData对象,例如: DatabaseMetaData metadata=con.getMetaData(); 2. Metadata对象再调用getColumns可以将表的字段信息以行列的形式存储在一个ResultSet对象中,例如: ResultSet tableMessage= metadata.getColumns(null,null,employee,null); 3. tableMessage对象调用next方法使游标向下移动一行(游标的初始位置在第1行之前),然后tableM

13、essage调用getXXX方法可以查看该行中列的信息,其中最重要的信息是第4列,该列上的信息为字段的名字。 表表11.2 tableMessagetableMessage对象的格式对象的格式 例例11-2 Example11_2.java , Query.java 14表表11.2 11.2 tableMessagetableMessage对象的格式对象的格式 15例例11-2例例11-2 Example11_2.java , Query.java 1611.4.2 控制游标控制游标 需要在结果集中前后移动、显示结果集指定的一条记录或随需要在结果集中前后移动、显示结果集指定的一条记录或随机显

14、示若干条记录等。这时,必须要返回一个可滚动的结果集。机显示若干条记录等。这时,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果集,需使用下述方法先获得一个为了得到一个可滚动的结果集,需使用下述方法先获得一个Statement对象:对象:Statement stmt=con.createStatement(int type ,int concurrency); 然后,根据参数的然后,根据参数的type、concurrency的取值情况的取值情况( (p211)p211),stmt返回相应类型的结果集:返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQ

15、L语句语句); 滚动查询经常用到滚动查询经常用到ResultSet的下述方法:的下述方法:public boolean previous():将游标向上移动public void beforeFirst():将游标移动到结果集的初始位置。public void afterLast():将游标移到结果集最后一行之后。public void first():将游标移到结果集的第一行。public void last():将游标移到结果集的最后一行。public boolean isAfterLast():判断游标是否在最后一行之后。public boolean isBeforeFirst():判断

16、游标是否在第一行之前public boolean ifFirst():判断游标是否指向结果集的第一行。public boolean isLast():判断游标是否指向结果集的最后一行。public int getRow():得到当前游标所指行的行号.0public boolean absolute(int row):将游标移到参数row指定的行号。17例例11-3Example11_3.java 1811.4.3 条件查询条件查询 在下面的例在下面的例11-411-4中使用了例中使用了例11-211-2中的中的QueryQuery类,分类,分别按商品号和价格查询记录。主类将查询条件传递经别按商

17、品号和价格查询记录。主类将查询条件传递经QueryQuery类的实例。程序运行效果如图类的实例。程序运行效果如图11.1311.13所示。所示。 例例11-4 Example11_4.java , Query.java 1911.4.4 排序查询排序查询 可以在SQL语句中使用ORDER BY子语句,对记录排序 。 按薪水排序查询的SQL语句: SELECT * FROM goods ORDER BY price例例11-5 Example11_5.java , Query.java 2011.4.5 模糊查询模糊查询 可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,

18、用一个下划线“_”代替1个字符。下述语句查询商品名称中含有“T”或“宝”的记录: rs=sql.executeQuery(“SELECT * FROM goods WHERE name LIKE T宝宝% ”); 例例11-6 Example11_6.java , Query.java 2111.5 更新、添加与删除操作更新、添加与删除操作 Statement Statement对象对象调用方法:调用方法: public int executeUpdate(String sqlStatement); 通过参数通过参数sqlStatementsqlStatement指定的方式实现对数据库表中记录

19、的指定的方式实现对数据库表中记录的更新、添加和删除操作。更新、添加和删除操作。 更新、添加和删除记录的更新、添加和删除记录的SQLSQL语法分别是:语法分别是: UPDATE SET = 新值新值 WHERE 例:例:UPDATE goods SET price =3009 WHERE name=海尔电视机海尔电视机。 INSERT INTO 表表(字段列表字段列表) VALUES (对应的具体的记录)或对应的具体的记录)或INSERT INTO 表表(VALUES (对应的具体的记录)对应的具体的记录) 例:例:INSERT INTO goods(number,name,madeTime,p

20、rice) VALUES (A009,手机手机, 2010-12-20,3976) DELETE FROM WHERE 例子例子 DELETE FROM goods WHERE number = B002 例例11-7 Example11_7.java , ModifyTable.java 2211.6 使用预处理语句使用预处理语句 Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。 2311.6.1 预处理语句优点预处理语句优点 预处理预处理不仅减轻了数据库的负担,而且也提高了访问数据库的速度。 对于JDBC,如果使用Con

21、nection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象对象中,那么该对象调用下列方法都可以使得该地层内部命令被数据库执行 ResultSet executeQuery() ; boolean execute(); int executeUpdate(); 只要编译好了PreparedStatement对象,那么该对象可以随时地执行上述方法,显然提高了访问数据库的速度。 例例11-8 Example

22、11_8.java , PrepareQuery.java2411.6.2 使用统配符使用统配符 在对SQL进行预处理时可以使用统配符“?”来代替字段的值,只要在预处理语句执行之前再设置统配符所表示的具体值即可。例如:sql=con.prepareStatement(SELECT * FROM employee WHERE salary ? );那么在sql对象执行之前,必须调用相应的方法设置统配符“?”代表的具体值,比如: sql.setFloat(1,76.98 ); 指定上述预处理SQL语句中统配符“?”代表的值是76.98 预处理语句设置统配符“?”的值的常用方法有: void set

23、Date(int parameterIndex,Date x) void setDouble(int parameterIndex,double x) void setFloat(int parameterIndex,float x) void setInt(int parameterIndex,int x) void setLong(int parameterIndex,long x) void setString(int parameterIndex,String x) 例例11-9 Example11_9.java , AddRecord.java 2511.7 事务事务 11.7.1

24、事务及处理事务及处理 事务由一组事务由一组SQLSQL语句组成,所谓事务处理是指:语句组成,所谓事务处理是指:应用程序保证事务中的应用程序保证事务中的SQLSQL语句要么全部都执行,语句要么全部都执行,要么一个都不执行。要么一个都不执行。 事务处理是保证数据库中数据完整性与一致事务处理是保证数据库中数据完整性与一致性的重要机制。性的重要机制。 2611.7.2 JDBCJDBC事务处理步骤事务处理步骤 1 1使用setAutoCommit(boolean autoCommit)方法 和数据库建立一个连接对象后,比如con。那么con的提交模式是自动提交模式,为了能进行事务处理,必须关闭con的这个默认设置。con.setAutoCommit(false); 2 2使用commit()方法 连接对象con调用commit()方法就是让事务中的SQL语句全部生效。 3 3使用rollback()方法 con调用rollback()方法的作用是撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commit(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论