J2EE讲义11-Jdbc技术_第1页
J2EE讲义11-Jdbc技术_第2页
J2EE讲义11-Jdbc技术_第3页
J2EE讲义11-Jdbc技术_第4页
J2EE讲义11-Jdbc技术_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、JDBC技术目录 Jdbc技术概述通过JDBC技术与数据库建立连接了解数据库的信息查询数据库检索结果集更新数据库参数的输入和输出JDEC概述 将Java语言和Sql结合的一个很好的编程接口。 通用的一般的SQL数据库访问和存储结构。支持基本SQL功能的一个通用低层的应用程序编程 接口,在不同的数据库功能模块上提供了一个统一 的用户界面。 ODBC样,建立在X/Open SQL CLI基础之上。 是为Java语言定义的一个SQL调用级(CLI)界面。IjDBC的特点1. 在SQL水平上的API为Java语言定义的一个sql调用级界面,其中心在于执 行基本的SQL声明和取回结果。在此基础上可以定义

2、更 高层次的A P I2. 与SQL的一致性. JDBC允许使用从属于DBMS的系统的任何查询语句, 一个应用程序可以尽可能的使用SQL功能。用户至少使用ANSI SQL 92 entry level标准3. 可在现有的数据库接口之上实现比如可以在ODBC之上实现I JDBC的特点4. 提供与其他Java系统一致的java界面5. 简单易行,最大可能简单化6. 使用健壮、静态的通用数据类型。7. 使一般情形简单化8. 多种方法、多种功能Jdbc的结构 Jdbc有两种接口,分别是面向开发人员的JDBC API 和面向低层的 JDBC Driver API,执行SQL语句,并且得Driver Ma

3、nagerJDBC的结构ConnectionConnectio nStateme ntP reparedState me ntResultResultCon nectionllableStateResult JDBC API是一系列的接口,他使得应用程序 能够进行数据库联接, 到返回结果。JDBC Driver interface是面向驱动程序开发商的接口,每一个驱动程序 都必须提供对于java.sql.Connection, java.sql.Statement, java.sql.PreparedStatement, java.sql只esultSet曙主要挨口的实现方法。 Java.sq

4、l.DriverManager需要装载驱动程序时,每 个驱动程序需要提供一个能实现java.sql.Driver接 口的类。IjDBC驱动程序的类型(重要)1. Jdbc-odbc 桥2. Native-api partly -java driver1. 本地java驱动程序,将jdbc调用转换为对数据库客户端API的调用3. Net-protocol all-java Driver (Jdbc proxy)4. 将jdbc调用转换为独立于特定数据库的网络协 议,完全java驱动程序4. Native-扌比rotocol all-java driver5. 将JDBC调用转换为特定数据库的网络

5、协议,完 全Java驱动程序I数据库应用模型本地资源桌面应用稈序数据库服务器下载代码| JDBC Drivers 数据库访问DataHVQb和rversI通过JDBC访问数据库1. 建立连接 所有Jdbc程序的第一步都是与数据库建立连接,用户得到 一个 java.sql. Connection 的对象 加载驱动程序,1. 通过设置Java属性中的sql.driver来制定驱动程序列表。这个属 性是一系列的用冒号隔开的匚river类的名称,按照顺序搜索驱 动程序,使用第一个能成功和给定URL相连的驱动程序。2. 使用Class.forName()显式加载驱动程序。例如3. Class.foNam

6、e(“sunjdbc.odbc.JdbcOdbcDive”);加载了 sun公司提供的jdbcodbc桥驱动程丿G由驱动程序负责向 DriverManager登记,在数据库连接时,DriverManager将试图 使用此驱动程序。桌面应用程序数揭库服务器与数据库的连接2.建立连接指定数据库连接的url,数据源的位置使用 DriverMa nager.getC onn ection(url); 例女口: String url= Ujdbc:odbc:datasourcen;Connection conn二DriverManager.getConnection(url); 或者:Conn ecti

7、o nconn=DriverManager.getConnection(String url , String user, String password)了解数据库中的信息在和数据库建立连接后,就可以获得有关数据源的各种 信息:表,列,数据类型,存储过程等。这些信息通过 DatabaseMetaData类的对象上实现的。 DatabaseMetaData dbma=conn.getMetaData();其中提供了很多方法获取数据源的各个方面的信息,这 些方法中,有一些用字符串匹配搜索模式作为参数, 匹配单个字符,“”匹配0个或多个字符.一个值 为nul啲Java String可以与任何字符串

8、匹配.对某些方法,有些驱动程序可能不支持,会产生一个 SQLException 意外.了解数据库中的信息基本信息 getURL(); getUserName() isReadOnly() getDatabaseProduceName()j; getDriverName(); getDriverVersio n();其他 getTables(),getColumns(),getlndexl nfo();查询数据库(Statement)1. 创建 Statement用户执行sql语句, Statement stmt=conn.createStatement();2. 执行查询语句 String s

9、ql=uselect * from customer ResultSet rs=stmt.executeQuery(sql); executeQuery()般用于执行一个sq语句,返回一个结果 集,execute。方法返回多个结果集, 一个Statement对象在同一时间只能打开一个结果集,对第 二个结果集的打开隐含着对第一个结果集的关闭.3. 关 闭Statement stmt.close()查询数据库(PreparedStatement) Statement对象在每次执行sq晤句时都将语句 传给数据库,在多次执行同一个语句时,效率 比较低.可以使用PreparedStatement,使用数

10、据库的预编译功能,速度可以提高很多.jin PreparedStatement对象的sql语句可以接受参 数,每次执行时可以传递不同的参数.查询数据库(PreparedStatement)1. 创建 String sql=uselect * from customer where age=?n PreparedStatement pstmt=conn.prepareStatement(sql);2. 执行 pstmt.setlnt(1,30); ResultSet=pstmt.executeQuery();3. 关闭 Pstmt.close();查询数据库(CallableStatement)

11、用于执行存储过程1. 创建Connection的对象又一个方法prepareCall()可以创建一个 CallableStatement对象,参数格式是” call p roced u re N a m en, K 中 procedureName 是存 储过程的名称上匕如存储过程的名称叫Qureyl,CallableStatementcstmt=conn.prepareCall(ucall Queryl()”);2. 执彳亍 ResultSet rs=cstmt.executeQuery();3. 关闭 cstmt.closeO;I检索结果集前面讲了如何执行sq语句,返回了 ResultSet

12、类的对象 这里讲如何对ResultSet对象进行处理 ResultSet的基本处理方法 ResultSet对象包括一个由查询语句返回的一个表,这个表中 包含所有的查询结果,按照行和列进行处理. ResultSet对象维持一个指向当前行的指针最初,这个指针指 向冕一行之前只esultSet类的next()方法使这个扌旨针衫向卞一 行棗一次強用next()方法,将指针扌旨向结果集胡第一行.next 方法的返向值是一个boolean值,若为true,则成功移向下一行. 若返回false则没有下一行. getXXX方法可以从某一列中获得结果其中XXX是jdbc中的 java数据类型如getlnt();

13、需要制是检素的列,或名称.I检索结果集Statement stmt=c onn .createStatement(); String sql-select a,b,c from mytable: ResultSet rs=stmt.executeQuery(sql); While (rs.next() int i=rs.getlnt(1);String s=rs.getString(ua,J);byte b=rs.getBytes(3);I数据转换 ResultSet结果集中Sql类型和java数据类型之 间的转换比如结果集中,某一列的数据是varchar(30),就 可以使用getStrin

14、g(参裁)方法获取值,比如在SQL Server数据库中,数据类型bit有两 个值1,0,在结果集中,可以用getBoolean(参数) 获取.参照表15-1I数据类型转换表java类型SQL类型booleanBITbyteTINYINTshortSMALLINTintINTEGERlongBIGINTStringCHAR,VARCHAR 丄 0 NGVARCHARbyte arrayBINARY , VAR BINARYjava.sql.DateDATEjava.sql.TimeTIMEjavavSqUimestampI读取较长的值(重要)女 M 可读取 I on gvarcharjongv

15、arbi nary 的值 getString, getBytes有长度限制,Sta怕merit中的setMaxFieldSize设置. ResultSet的对象可以从数据上返回java.ion putStream.获得流后应立即读取,执行next方法后,流将关闭.获取的方法有getBinaryStream,getAsciiStream,get Un icodeStream, getCharacterStream例子Statement stmt=conn.createStatement(); String sql=uselect x from mytable” ResultSet rs=stmt

16、.executeQuery();Byte buff=new byte4096; While(r.next()Inputstream is=rs.getAssicStream(); for(;)int size=is.read(buff); if(size=O) break;获取结果集的信息ResultsetMetaData可以获取结果集中的列的名称,数据类型等. ResultsetMetaData rsmd=rs.getMetaData(); getColumnCount(); getColumnName(int column); getColumnType(int column);返回int

17、值 getColumnTypeName(int column);返回字符 串 isReadOnly(int column) isNullable(int column)I更新数据库包括修改,更新和删除记录,创建和删除表,以及增加和删除列对应于数据库的insert,update delete,create,drop等.对数据库的更新操作也是通过Statement对象完成的.不使用executeQuery()方法,使用 executeUpdate()方法. execute Update的返回值是它影响的记录的行 数.I更新数据库例如 String sql-update Customer set address=Peking where lastname=Lin, int i=Stmt.executeUpdate(sql)返回更新的行数.I参数的输入和输出 Jdbc允许在要执行的sql语句中设置参数,用?代 表参数需要使用 PreparedStatement,CallableStatement.用setXXX()方法给参数赋值.XXX是jdbc数据类 型,第一个参数是位置是1,第二个参数的位置是

温馨提示

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

评论

0/150

提交评论