JDBC笔记.doc_第1页
JDBC笔记.doc_第2页
JDBC笔记.doc_第3页
JDBC笔记.doc_第4页
JDBC笔记.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

l.连接到数据库的方法答:1)ODBC(OpenDatabaseConnectivity)一个以C语言为基础访问SQL为基础数据库引擎的接口,它提供了一致的接口用于和数据库沟通以及访问数据。2)JDBCJava版本的ODBC2.JDBC应用编程接口答:JDBC应用编程接口是:1)标准的数据访问接口,可以连到不同的数据库;2)JAVA编程语言的一组类和接口。JDBC应用编程接口能够:1)连接到数据库;2)发SQL查询字符串到数据库;3)处理结果。JDBC应用编程接口有二个主要的部分:1)JAVA应用程序开发接口面向JAVA应用程序开发者;2)JDBC驱动程序开发接口3.JDBCDriver答:1)一大堆实现了JDBC类和接口的类;2)提供了一个实现java.sql.Driver接口的类。4.JDBCDriver的四种类型答:1)JDBC-ODBC桥由ODBC驱动提供JDBC访问2)本地API部分Javadriver把JDBC调用转化成本地的客户端API3)JDBC-net纯的Javadriver,将JDBC调用转入DBMS,与网络协议无关。然后通过服务器将调用转为DBMS协议。4)本地协议纯的javadriver,将JDBC调用直接转为DBMS使用的网络协议5.JDBC开发者接口答:1)java.sql-java2平台下JDBC的主要功能,标准版(J2SE)2)javax.sql-java2平台下JDBC增强功能,企业版(J2EE)6.使用URL确认数据库答:我们使用URL来确定一个数据库(正确的Driver,正确的主机,正确的协议,正确的协议,正确的用户名和密码);语法:protocol:subprotocol:subname范例:jdbc:db2:MyTestjdbc:db2:/localhost:6789/MyTest7.javax.sql包JDBC2.0的增强功能答:1)数据源接口;2)连接池;3)分布式交易;4)行集;8.创建一个基本的JDBC应用答:1)步骤一:注册一个driver;2)步骤二:建立一个到数据库的连接;3)步骤三:创建一个statement;4)步骤四:执行SQL语句;5)步骤五:处理结果;6)步骤六:关闭JDBC对象9.注册一个Driver(步骤一)答:1)driver被用于连接到数据库;2)JDBC应用编程接口使用第一个能成功连接到给定URL的driver;3)在同一时间可以装载多个driver10.注册一个driver的方法:答:1)使用类loader(装载;实例化;注册入DriverManager)a.Class.forName(Com.ibm.db2.jdbc.app.DB2Driver);b.Class.forName(C.DB2Driver);c.Class.forName(Com.microsoft.jdbc.sqlServer.SQLServerDriver);d.Class.forName(oracl.jdbc.driver.OracleDriver);e.Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);2)实例化一个Drivera.Driverdrv=newCOM.cloudscape.core.RmiJdbcDriver();1. 建立一个到数据库的连接(步骤二)答:DriverManager调用getConnection(urlString)方法,实际上调用的是driver的connect(urlString)方法;1)当一个driver肯定地对应到一个数据库URL,DriverManager建立一个连接;2)当没有driver匹配,返回null然后下一个driver被检验;3)假如没有建立连接,抛出一个SQLExcepiton异常2.经常使用的一些JDBCURL答:1)JDBC-ODBC:jdbc:odbc:2)Oracle:jdbc:oracle:oci:orjdbc:oracle:thin:3)WeblogicMS-SQL:jdbc:weblogic:mssqlserver4:4)DB2:jdbc:db2:MyTestorjdbc.db2:/localhost:6789/MyTest(需要用户名和密码)3.Driver连接方法答:1)创建一个到指定Driver实例的直接调用;2)避免一般访问的问题Driverdrv=newCOM.ibm.db2.jdbc.app.DB2Driver();Connectioncon=null;trycon=drv.connect(jdbc:db2:MyTest,newProperties()catch(SQLExceptione)4.创建一个Statement(步骤三)答:1)Statement的三个接口:a.Statement;b.PreparedStatement(继承自Statement);c.CallableStatement(继承自PreparedStatement);2)使用方法Connection.createStatement()得到一个Statement对象5.PreparedStatement对象答:1)调用ProparedStatement比statement更为高效;2)继承自Statement;3)语法:PreparedStatementpstm=connection.prepareStatement(sqlString);6.CallableStatement对象答:1)通过CallableStatement调用数据库中的存储过程;2)继承自PreparedStatement;3)CallableStatementcstm=connection.prepareCall(callreturn_student?,?);cstm.setString(1,8623034);cstm.registerOutparameter(2,Types.REAL);cstm.execute();floatgpa=cstm.getFloat(2);7.Statement接口的比较答:|Statement|PreparedStatement|CallableStatement-写代码位置|客户端|客户端|服务器端-写代码位置|客户端|服务器端|服务器端-编写代码技术|Java,SQL操作|Java,SQL操作|数据库的程序语言,如PL/SQL-可配置性|高|第一次高,以后低|低-可移植性|高|假设支持PreparedStatement的话高-传输效率|低|第一次低,以后高|高8.执行SQLStatement(步骤四)答:通过接口方法将SQL语句传输至?认的数据库连接,返回结果可能是一个数据表,可以通过java.sql.ResultSet访问。1)Statement的接口方法:a.executeQuery(sqlString):执行给定的SQL声明,返回一个结果集(ResultSet)对象;b.executeUpdate(sqlString):执行给定的SQL声明,可以是INSERT、UPDATE或DELETE声明,也可以是SQLDDL声明;c.execute(sqlString):执行给定的SQL声明。9.处理结果(步骤五)答:1)使用结果集(ResultSet)对象的访问方法获取数据;a.next():下一个记录b.first():第一个记录c.last():最后一个记录d.previous():上一个记录2)通过字段名或索引取得数据3)结果集保持了一个指向了当前行的指针,初始化位置为第一个记录前。10.关闭JDBC对象(步骤六)答:1)首先关闭记录集;2)其次关闭声明;3)最后关闭连接对象。11.数据表和类对应的三种关系:答:1)一个表对应一个类;2)一个表对应相关类;3)一个表对应整个类关系层12.类间关系的几种表设计:答:1)多对一,2)一对一:3)一对多:4)多对多:13.SQL数据类型及其相应的Java数据类型答:SQL数据类型Java数据类型说明-INTEGER或者INTint通常是个32位整数SMALLINTshort通常是个16位整数NUMBER(m,n)DECIMAL(m,n)Java.sql.Numeric合计位数是m的定点十进制数,小数后面有n位数DEC(m,n)Java.sql.Numeric合计位数是m的定点十进制数,小数后面有n位数FLOAT(n)double运算精度为n位二进制数的浮点数REALfloat通常是32位浮点数DOUBLEdouble通常是64位浮点数CHARACTER(n)或CHAR(n)String长度为n的固定长度字符串VARCHAR(n)String最大长度为n的可变长度字符串BOOLEANboolean布尔值DATEJava.sql.Date根据具体设备而实现的日历日期TIMEJava.sql.Time根据具体设备而实现的时戳TIMESTAMPJava.sql.Timestamp根据具体设备而实现的当日日期和时间BLOBJava.sql.Blob二进制大型对象CLOBJava.sql.Clob字符大型对象ARRAYJava.sql.Array2004-9-15星期三阴1.元数据答:关于数据的信息,例如类型或者容量。通过JDBCAPI可以访问:1)数据库元数据;a.使用connection.getMetadata方法返回DataMetaData引用b.能够使用isReadOnly此类方法获取信息2)结果集元数据;a.使用ResultSet.getMetadata方法返回ResultSetMetaData引用b.能够使用getColumnCount此类方法获取信息2.事务处理答:1)一系列的动作作为一个不可分的操作;2)JDBCAPI中使用事务处理步骤:a.用false作为参数调用setAutoCommit方法;b.执行一或多个关于数据库的操作;c.调用commit方法完成改变;d.恢复上次提交后的改变,调用rollback方法.trycon.setAutoCommit(false);Statementstm=con.createStatement();stm.executeUpdate(insertintostudent(name,age,gpa)values(gzhu,30,4.8);mit();catch(SQLExceptione)trycon.rollback();catch(Exceptione)3.并发控制答:1)设置隔离级别方法:setTransactionIsolation2)隔离级别静态变量a.TRANSACTION_NONE:只读的数据字典;b.TRANSACTION_READ_UNCOMMITTED:只读未提交数据;c.TRANSACTION_READ_COMMITTED:只读未提交数据;d.TRANSACTION_REPEATABLE_READ:重复读取数据;e.TRANSACTION_SERIALIZABLE:无论做什么操作都不许别人动。3)示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);4.JDBC2.0应用程序编程接口增强功能答:1)ResultSet增强:a.可以回卷;b.可以修改;设置示例:Statementstm=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);2)Statement增强了批量修改能力(batchupdates);3)更高级的数据类型(例:Struct)。5.JDBC2.0标准扩展答:1)JNDI(JavaNamingandDirectoryInterface):解决离散状态下Object的查找;2)连接池:在内存中保存了一个数据库连接,不需要注册驱动器,提高性能的重要方法。 大家好,又过了一天,今天的福州经历了一场暴风雨的洗礼,宁静中夹带着其惯有的雍懒.调试了一天的程序,头有点晕,放松一下,听点music,写点东东.通过昨天的学习,对JDBC在JSP应用中的重要性和JDBC的概念有了一个初步的了解.为此,今天就看看如何利用JDBC API对数据库进行访问.我这人忒笨,学编程都是从别人的例子着手,所以,为了对JSP通过JDBC访问数据库管理系统有一个感性的认识,我们先看一个简单的例程:package com.rongji.demo;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class DataConn public DataConn() public static void main(String args) try/加载驱动程序/下面的代码为加载JDBD-ODBC驱动程序 Class.forName(com.mysql.jdbc.Driver);/建立连接/第二步是用适当的驱动程序连接到DBMS,看下面的代码: String url=jdbc:mysql:/localhost:3306/ums_db?useUnicode=true&characterEncoding=GB2312;/用url创建连接 Connection con=DriverManager.getConnection(url); /然后创建一个JDBC声明 Statement stmt = con.createStatement(); String query=CREATE TABLE GOODS + (GOODS_NAME VARCHAR(60),+ PRICE FLOAT,+ SALES INTEGER,+ TOTAL INTEGER); /执行声明 stmt.executeUpdate(query); /关闭声明 stmt.close(); /关闭连接 con.close(); System.out.println(操作成功!下班了:));catch (Exception e)/输出异常信息 System.err.println(SQLException meet when creating goods table:+e.getMessage(); e.printStackTrace();从这个简单的例程中我们可以看到:JSP调用JDBC API访问数据库管理系统是通过以下五个步骤来实现的:(1)加载特定的JDBC驱动程序为了与特定的数据源连接,JDBC必须加载相应的驱动程序。这些驱动程序都是通过语句:Class.forName(Driver Name); 来加载的。这里面有一个小技巧,我们可以在”Driver Name”出填入一系列的驱动程序名称,例如:“Class.forName(sun.jdbc.odbc.JdbcOdbcDriver:oracle.jdbc.driver.OracleDriver”); 中间用冒号隔开。JSP将按照列表顺序搜索驱动程序,并且加载第一个能与给定的URL相连的驱动程序。在搜索驱动程序列表时,JSP将跳过包含不可信任代码的驱动程序,除非他与要打开的数据库管理系统是来源于同一处.(2)用已注册的驱动程序建立到数据库管理系统的连接我们要做的第二步是用已经注册的驱动程序建立到数据库管理系统的连接,这要通过DriverManager类的getConncetion方法来实现。这里特别需要注意的是String类型 url 参数的取值,url代表一个将要连接的特定的数据库管理系统的数据源。使用不同的数据库驱动程序,url的取值方式是不同的。例程中加载了“com.mysql.jdbc.Driver”驱动,url的取值方式“jdbc:mysql:/localhost:3306/ums_db?useUnicode=true&characterEncoding=GB2312”,如果加载“oracle.jdbc.driver.OracleDriver”驱动,url的取值方式应该是“jdbc:oracle:thin:host name:port number:service name”。其他驱动程序的url的取值方式,各位自行参阅相应的文挡。例程中的GetConnection()方法只有一个参数String url,代表ODBC数据源,如果连接大型数据库,则需要三个参数:String url、Strng user、String password。User和password代表数据库管理系统的用户名和口令。一般的大型数据库如Oracle、MS SQL Server、DB2等用户名和口令是必须的。而小型的数据库如ACCESS、Foxpro等并不需要。如果连接成功,则会返回一个Connection类的对象con。以后对数据库的操作都是建立在con对象的基础上的。GetConnection()方法是DriverManager类的静态方法,使用时不用生成DriverManager类的对象,直接使用类名DriverManager就可以调用。 (3)创建Statement声明,执行SQL语句在实例化一个Connection类的对象con,成功建立一个到数据库管理系统的连接之后。我们要做的第三步是利用该con对象生成一个Statement类的对象stmt。该对象负责将SQL语句传递给数据库管理系统执行,如果SQL语句产生结果集,stmt对象还会将结果集返回给一个ResultSet类的对象。Statement类的主要的方法有三个:executeUpdate(String sql) executeQuery(String sql) execute(String sql)executeUpdate(String sql)方法用于执行DDL类型的SQL语句,这种类型的SQL语句会对数据库管理系统的对象进行创建、修改、删除操作,一般不会返回结果集。executeQuery(String sql)方法用于执行一条查询数据库的SELECT语句。如果有符合查询条件的数据存在,该方法将返回一个包含相应数据的ResultSet类对象,否则,该对象的next()方法将返回false。execute(String sql)方法用于执行一个可能返回多个结果集的存储过程(Stored Procedure)或者一条动态生成的不知道结果集个数的SQL语句。如果存储过程或者SQL语句产生一个结果集,该方法返回false.如果产生多个结果集,该方法返回true。我们可以综合运用Statement类的getResultSet(), getUpdateCount(), getMoreResults()方法来检索不同的结果集。服务

温馨提示

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

评论

0/150

提交评论