Java程序设计项目教程模块6-Java数据库编程.ppt

上传人(卖家):三亚风情 文档编号:3372404 上传时间:2022-08-24 格式:PPT 页数:33 大小:690KB
下载 相关 举报
Java程序设计项目教程模块6-Java数据库编程.ppt_第1页
第1页 / 共33页
Java程序设计项目教程模块6-Java数据库编程.ppt_第2页
第2页 / 共33页
Java程序设计项目教程模块6-Java数据库编程.ppt_第3页
第3页 / 共33页
Java程序设计项目教程模块6-Java数据库编程.ppt_第4页
第4页 / 共33页
Java程序设计项目教程模块6-Java数据库编程.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、模块模块6Java数据库编程数据库编程6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作项目项目42 使用使用JDBC-ODBC桥接实现与数据桥接实现与数据库的连接及查询数据表中的数据库的连接及查询数据表中的数据 w JDBC的基本功能的基本功能 nJava DataBase Connectivity,Java数据库连接n由一组用Java编程语言编写的类和接口组成,是一种可用于执行SQL语句的Java API n在java.sql包中定义 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w JDBC API 中定义的主要类n数据库驱动程序管理器类DriverM

2、anager l在用户程序和数据库系统之间维护着与数据库驱动程序之间的连接 l实现驱动程序的装载 l创建与数据库系统连接的Connection类对象 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作DriverManager类的常用方法方法主要功能主要功能void deregisterDriver(Driver driver)从 DriverManager 的列表中删除一个驱动程序 Connection getConnection(String url)建立到给定数据库 URL 的连接Connection getConnection(String url,Properties

3、 info)建立到给定数据库 URL 的连接Connection getConnection(String url,String user,String password)建立到给定数据库 URL 的连接Driver:每个驱动程序类必须实现的接口 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作 Driver getDriver(String url)查找能理解给定 URL 的驱动程序 Enumeration getDrivers()获取带有当前调用者可以访问的所有当前已加载 JDBC 驱动程序的 Enumerationint getLoginTimeout()获取驱动程序试

4、图登录到某一数据库时可以等待的最长时间,以秒为单位。void registerDriver(Driver driver)向 DriverManager 注册给定驱动程序void setLoginTimeout(int seconds)设置驱动程序试图连接到某一数据库时将等待的最长时间,以秒为单位。6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作类类Connection用于管理到指定数据库的连接用于管理到指定数据库的连接 方法方法主要功能主要功能void clearWarning()清除为此 Connection 对象报告的所有警告SQLWarning getWarnings(

5、)获取此 Connection 对象上的调用报告的第一个警告void close()即释放此 Connection 对象的数据库和 JDBC 资源boolean isClosed()查询此 Connection 对象是否已经被关闭void commit()使所有上一次提交/回滚后进行的更改成为持久更改,并释放此 Connection 对象当前持有的所有数据库锁。6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作Statement createStatement(int resultSetType,int resultSetConcurrency)创建一个 Statement 对

6、象,该对象将生成具有给定类型和并发性的 ResultSet 对象Statement用于执行静态 SQL 语句并返回它所生成结果的对象 resultSetType包括:TYPE_FORWARD_ONLY 1003 指针只能向前移动TYPE_SCROLL_INSENSITIVE 1004指针可滚动但通常不受其他的更改影响TYPE_SCROLL_SENSITIVE 1005指针可滚动并且通常受其他的更改影响resultSetConcurrency包括CONCUR_READ_ONLY 1007 不可以更新CONCUR_UPDATABLE 1008 可以更新 6.1与数据库的连接及数据的基本操作与数据库

7、的连接及数据的基本操作Statement createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库String getCatalog()获取此 Connection 对象的当前目录名称void setCatalog(String catalog)设置给定目录名称DatabaseMetaData getMetaData()获取一个 DatabaseMetaData 对象,该对象包含关于此 Connection 对象所连接的数据库的元数据接口 DatabaseMetaData(数据库元数据)关于数据库的整体综合信息 元数据:描述数据及其环境的数据能提供基于

8、用户的信息能支持系统对数据的管理和维护 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作boolean isReadOnly()查询此 Connection 对象是否处于只读模式void setReadOnly(boolean readOnly)将此连接设置为只读模式CallableStatement prepareCall(String sql)创建一个 CallableStatement 对象来调用数据库存储过程CallableStatement:用于执行 SQL 存储过程的接口PreparedStatement:表示预编译的 SQL 语句的对象 PreparedStat

9、ement prepareStatement(String sql)创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库void rollback()取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作wJDBC访问数据库的两种方式访问数据库的两种方式n利用数据库产品的面向利用数据库产品的面向ODBC驱动程序,在驱动程序,在JDBC和和ODBC之间建立之间建立JDBC-ODBC桥,桥,在在Java程序中基于程序中基于JDBC-ODBC桥的方式桥的方式访问数

10、据库访问数据库n基于特定数据库产品的基于特定数据库产品的JDBC驱动程序,在驱动程序,在Java应用程序中利用应用程序中利用JDBC数据驱动程序直数据驱动程序直接与数据库连接接与数据库连接 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w建立数据库连接建立数据库连接 n首先必须通过java.lang.Class类的forName()动态加载驱动程序类,加载驱动器的语句为:Class.forName(sun.jdbc.odbc.JdbcOdbcDrvier);n再向DriverManager注册JDBC驱动程序,用DriverManager类中的getConnection()

11、方法建立与数据库的连接。Connection con=DriverManager.getConnection(url,数据库的用户名,密码);l url是由三部分组成,是提供识别数据库方式的串::例:如果数据源是MyDataSource,则url可以写成:jdbc:odbc:MyDataSource6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w 创建数据源的步骤创建数据源的步骤(Windows XP)n打开控制面版性能和维护管理工具数据源(ODBC)n在“用户DSN”中单击添加按钮 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w 创建数据源的步骤创建

12、数据源的步骤(Windows XP)n选择SQL Server,点击完成按钮 n在名称栏内写上数据源的名字,如MyDataSource 服务如果是用本机的话就直接写上“.”号就可以了,如果是用别的服务器,请单击下拉按钮选择。然后单击下一步 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w 创建数据源的步骤创建数据源的步骤(Windows XP)n可以选择使用用户输入登录的ID和密码的SQL Server验证,然后设置登录SQL的用户名和密码,如用户名为sa,密码为空,然后点下一步 n更改默认的数据库(你处理哪个数据库中的数据,就把对应的数据库更改为默认数据库,如pubs),

13、然后点下一步 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w 创建数据源的步骤创建数据源的步骤(Windows XP)n直接点完成 n点击测试数据源,测试是否连接成功。至此数据源建立完毕。点击确定按钮退出此对话框 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w创建和执行创建和执行JDBC语句语句nStatement对象可将简单的查询发送到数据库。对象可将简单的查询发送到数据库。l创建一个创建一个Statement对象对象l将想要执行的将想要执行的SQL语句传递给适当的执行方法语句传递给适当的执行方法l执行该执行该Statement对象。对象。如:如:

14、Statement stat=con.createStatement();n对于对于SELECT语句,使用的方法是语句,使用的方法是executeQuery()n对于创建、插入或更新表的语句,使用的方法是对于创建、插入或更新表的语句,使用的方法是executeUpdate()。如:如:stat.executeUpdate(sql);/sql字符串是一条字符串是一条SQL语句语句 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w处理结果:处理结果:JDBC将结果集返回给ResultSet对象 ResultSet rs=stat.executeQuery(sql);/sql字符

15、串是一条SQL语句n ResultSet结果集对象所包含的常用方法如下:lnext():对象rs包含了结果集中显示的表,将光标移到下一行。w光标初始定位于ResultSet对象第一行的上面w第一次调用next()将光标移到第一行,使它成为当前行。接下来调用next()将使光标从上至下每次移动一行。lgetString()w常用于检索CHAR和VARCHAR SQL类型的数据w也能检索其他基本SQL类型的数据例:如果用它检索numeric类型的数据,getString()将把numeric值转换成Java的String对象,这样一来,在数据要作为数字前就必须转换回numeric类型 6.1与数据

16、库的连接及数据的基本操作与数据库的连接及数据的基本操作ngetXXX():适当类型的getXXX方法可用于检索列中的数值,这里的XXX指列的数据类型l检索VARCHAR SQL类型数值的方法是getString()l检索float类型数值的方法是getFloat()while(rs.next()/每次调用next(),下一行就成为当前行,直到rs中再也没有可向前移动的行为止 String s=rs.getString(strColumnName1);float n=rs.getFloat(strColumnName2);/strColumnName1、strColumnName2都是sql字符

17、串中的列名 System.out.println(s+n);lJDBC使用两种方法标识getXXX方法检索数值的列w指定列名w指定列索引(列的序号),i表示第i列 如:String s=rs.getString(1);float n=rs.getFloat(2);6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w 与数据库连接及数据基本操作的步骤与数据库连接及数据基本操作的步骤n创建数据源n建立数据库连接 Class.forName(sun.jdbc.odbc.JdbcOdbcDrvier);Connection con=DriverManager.getConnection

18、 (url,“数据库用户名”,“密码);n创建和执行JDBC语句:Statement stat=con.createStatement();n执行JDBC语句,得到处理结果ResultSet rsstat.executeQuery(sql);while(rs.next()变量名rs.get(列名或列索引);n关闭连接:con.close6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作【应用扩展应用扩展】w 使用预备语句使用预备语句nStatement对象是可以将简单的查询发送到数据库n发送带参数的查询语句到数据库,可以使用PreparedStatement对象l包含一条预编译

19、过的SQL语句lDBMS不必编译就可直接运行PreparedStatement的SQL语句l代替Statement对象一般会缩短执行时间lPreparedStatement对象可用于不带参数的SQL语句,但在多数场合是用于带参数的SQL语句。6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作【应用扩展应用扩展】使用预备语句使用预备语句其用法如下:String strSql=UPDATE COFFEES SET SALES=?WHERE COF_NAME LIKE?;PreparedStatement stat=con.prepareStatement(strSql);stat.

20、setInt(1,75);/给上面的SQL语句的第一个问号赋值stat.setString(2,Colombian);/给上面的SQL语句的第二个问号赋值stat.executeUpdate();/相当于执行UPDATE COFFEES SET SALES=75 WHERE COF_NAME LIKE Colombian可用该对象制作成模板实现一次构造多条带参数的SQL语句,简化编码。6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作【应用扩展应用扩展】executeUpdate方法的返回值方法的返回值 executeQuery返回一个ResultSet对象 executeUp

21、date返回的是一个整数值,指出了表中已更新的行数。如果executeUpdate的返回值为0表明 执行的语句是一不影响任何行的更新语句 执行的是一无返回内容的 SQL 语句,比如DLL语句 SQL与与Java的数据类型 SQL数据类型与Java的数据类型不一致 在使用Java类型的应用程序与使用SQL类型的数据库之间,需要某种读写类型转换机制 ResultSet类的“get”系列方法 Statement及其子类的“set”系列方法都有可能要用到数据转换 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作项目项目43 使用纯使用纯Java JDBC 实现与数据库的连接及更新实现

22、与数据库的连接及更新JDBC-ODBC桥将JDBC数据转换为ODBC数据源,然后用ODBC与数据连接,速度比较慢。纯Java JDBC驱动程序用纯Java 语言编写独立的JDBC驱动程序直接与数据连接与数据库进行通信的整个过程均由Java语言实现,而不通过桥接或中间件来存取数据库缺点:需要下载相应的类包不同数据库的连接代码可能不同 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作项目项目43 使用纯使用纯Java JDBC 实现与数据库的连接及更新实现与数据库的连接及更新JDBC-ODBC桥将JDBC数据转换为ODBC数据源,然后用ODBC与数据连接,速度比较慢。纯Java

23、JDBC驱动程序用纯Java 语言编写独立的JDBC驱动程序直接与数据连接与数据库进行通信的整个过程均由Java语言实现,而不通过桥接或中间件来存取数据库缺点:需要下载相应的类包不同数据库的连接代码可能不同 w 使用纯Java JDBC驱动程序连接数据库 n装载驱动程序l在程序中,利用Class.forName()方法加载指定的驱动程序Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);l注意:连接不同的数据库时,加载的驱动程序有所不同。n建立与数据库的连接l首先创建指定数据库的URLjdbc:subProtlcol:subN

24、ame:/hostname:port;DatabaseName=XXXlJDBC表示当前通过Java数据库连接进行数据库访问lsubProtocal表示某种驱动程序支持的数据库连接机制lsubName表示在当前连接机制下的具体名称lhostname表示主机名。port表示相应的连接端口lDatabaseName是要连接的数据库的名称。例如:String url=jdbc:sqlserver:/localhost:1433;DatabaseName=pubs;/pubs为数据库名String user=“sa”;/用户名 String password=;/密码Connection conn=D

25、riverManager.getConnection(url,user,password);6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w创建存储过程创建存储过程nCallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法n创建一个存储过程:create procedure publishers_titles as select pub_name,title from publishers,titles where publishers.pub_id=titles.pub_id order by titlen将SQL语句放到一个字

26、符串中,然后赋给变量createProcedure以备后用:String createProcedure=”create procedure publishers_titles as select pub_name,title from publishers,titles where publishers.pub_id=titles.pub_id order by title”n使用Connection对象con来创建Statement对象,用于把创建存储过程的SQL语句发送给数据库:Statement stmt=con.createStatement();stmt.executeUpdate

27、(createProcedure);n存储过程publishers_titles将作为一个可调用的数据库对象在数据库中编译并存储,调用时就像调用其他方法一样 6.1与数据库的连接及数据的基本操作与数据库的连接及数据的基本操作w从从JDBC调用存储过程调用存储过程n创建一个CallableStatement对象l利用一个打开的Connection对象即可完成创建lCallableStatement对象包含了存储过程的一个调用;但它不包含存储过程本身 如:CallableStatement cs=con.prepareCall(call publishers_titles);ResultSet r

28、s=cs.executeQuery()n注意l用于执行cs的方法是executeQuery,因为cs调用的存储过程包含一个查询,执行后产生一个结果集l如果存储过程包含一条更新或一条DLL语句:executeUpdate方法l如果存储过程包含多条SQL语句,产生了多个结果集:execute方法6.2 结果集元数据结果集元数据 项目项目44 获取数据表的基本信息获取数据表的基本信息w 结果集元数据(ResultSetMetaData)包含结果集的相关信息如字段名和字段类型。w 根据结果集的元数据,可以得到一个查询结果集关于查询表中列的个数、各个列名、类型以及各个列的宽度等w ResultSetMe

29、taData的对象可以由ResultSet对象的getMetaData()方法得到。w 在使用结果集前,需要知道记录的行列数n此类信息存储在结果集元数据中n使用结果集中的成员方法“getMetaData()”,便可得到结果集元数据。ResultSetMetaData rsmd=results.getMetaData();numCols=rsmd.getColumnCount();/从结果集元数据中取得列数 6.2 结果集元数据结果集元数据项目项目44 获取数据表的基本信息获取数据表的基本信息ResultSetMetaData主要主要方法方法主要功能主要功能getColumnCount()返回目

30、前ResultSet对象的列数getColumnDisplaySize(int column)返回column指定的列的最大宽度getColumnLabel(int column)返回column指定列的标签getColumnName(int column)返回column指定列的列名getColumnType(int)返回指定号数的字段类型6.2 结果集元数据结果集元数据【应用扩展应用扩展】w 数据库元数据(DatabaseMetaData)n包含数据库的有关信息如表名、表索引、数据库产品名和版本号、数据库支持的操作等等。nDatabaseMetaData对象的创建如下:DatabaseMe

31、taData dma=con.getMetaData();/con是Connection的一个对象 6.2 结果集元数据结果集元数据 【应用扩展应用扩展】DatabaseMetaData类类主要主要方法方法主要功能主要功能ResultSet getCatalogs()获取可在此数据库中使用的类别名称。ResultSet getColumns(catalog,schema,tableNames,columnNames)返回指定表名的表的所有列名getTables(catalog,schema,tablemask,types)返回符合条件的表的描述String getURL()获取此 DBMS 的

32、 URLString getDriverName()获取此 JDBC 驱动程序的名称String getDriverVersion()获取此 JDBC 驱动程序的 String 形式的版本号String getDatabaseProductName()获取此数据库产品的名称String getDatabaseProductVersion()获取此数据库产品的版本号String getSQLKeywords()获取此数据库的还“不”是 SQL:2003 关键字的所有 SQL 关键字的逗号分隔列表。boolean supportsANSI92EntryLevelSQL()获取此数据库是否支持 AN

33、SI92 入门级 SQL 语法boolean supportsANSI92FullSQL()获取此数据库是否支持受支持的 ANSI92 完全 SQL 语法boolean supportsStoredProcedures()获取此数据库是否支持使用存储过程转义语法的存储过程调用 参数含义 w catalog表所在的目录n对于JDBC-ODBC数据库,可置为NULLn实际上就是数据库所在文件系统的绝对路径。w schema数据库的数据模式,通常置为NULL。w ablemask对要获取的表的描述。如果要取得所有表名。可使用通配符“%”。w types这是一个字符串数组,描述要获取的表的类型。n如果它为NULL,将得到所有的表。n如果是一个单元素的数组含有字符串“TABLES”,只得到与用户有关的表。例如:获取数据库中的表名。con=DriverManager.getConnection(url);dma=con.getMetaData();String types=new String1;types0=“TABLES”;results=dma.getTables(null,null,“%”,types);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Java程序设计项目教程模块6-Java数据库编程.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|