JDBC基础l.连接到数据库的方法 答:1)ODBC(OpenDatabaseConnectivity) 一个以C语言为基础访问SQL为基础数据库引擎的接口,它提供了一致的接口用于和数据库沟通以及访问数据。 2)JDBC Java版本的ODBC JDBC基础2.JDBC应用编程接口 答:JDBC应用编程接口是: 1)标准的数据访问接口,可以连到不同的数据库; 2)JAVA编程语言的一组类和接口。 JDBC应用编程接口能够: 1)连接到数据库; 2)发SQL查询字符串到数据库; 3)处理结果。 JDBC应用编程接口有二个主要的部分: 1)JAVA应用程序开发接口面向JAVA应用程序开发者; 2)JDBC驱动程序开发接口 JDBC基础3.JDBCDriver 答:1)一大堆实现了JDBC类和接口的类; 2)提供了一个实现java.sql.Driver接口的类。 JDBC基础4.JDBCDriver的四种类型 答:1)JDBC-ODBC桥 由ODBC驱动提供JDBC访问 2)本地API 部分Javadriver把JDBC调用转化成本地的客户端API 3)JDBC-net 纯的Javadriver,将JDBC调用转入DBMS,与网络协议无关。然后通过服务器将调用转为DBMS协议。 4)本地协议 纯的javadriver,将JDBC调用直接转为DBMS使用的网络协议 JDBC基础5.JDBC开发者接口 答:1)java.sql--java2平台下JDBC的主要功能,标准版(J2SE) 2)javax.sql--java2平台下JDBC增强功能,企业版(J2EE) JDBC基础6.使用URL确认数据库 答:我们使用URL来确定一个数据库(正确的Driver,正确的主机,正确的协议,正确的协议,正确的用户名和密码); 语法:protocol:subprotocol:subname 范例:jdbc:db2:MyTest jdbc:db2://localhost:6789/MyTest JDBC基础7.javax.sql包JDBC2.0的增强功能 答:1)数据源接口; 2)连接池; 3)分布式交易; 4)行集; JDBC基础8.创建一个基本的JDBC应用 答:1)步骤一:注册一个driver; 2)步骤二:建立一个到数据库的连接; 3)步骤三:创建一个statement; 4)步骤四:执行SQL语句; 5)步骤五:处理结果; 6)步骤六:关闭JDBC对象 JDBC基础9.注册一个Driver(步骤一) 答:1)driver被用于连接到数据库; 2)JDBC应用编程接口使用第一个能成功连接到给定URL的driver; 3)在同一时间可以装载多个driver JDBC基础10.注册一个driver的方法: 答:1)使用类loader(装载;实例化;注册入DriverManager) a.Class.forName("Com.ibm.db2.jdbc.app.DB2Driver"); b.Class.forName("Com.ibm.db2.jdbc.net.DB2Driver"); c.Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver); d.Class.forName("oracl.jdbc.driver.OracleDriver"); e.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 2)实例化一个Driver a.Driverdrv=newCOM.cloudscape.core.RmiJdbcDriver(); JDBC基础 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; try{con=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.Array JDBC基础 1.元数据 答:关于数据的信息,例如类型或者容量。通过JDBCAPI可以 1)数据库元数据; a.使用connection.getMetadata方法返回DataMetaData引用 b.能够使用isReadOnly此类方法获取信息 2)结果集元数据; a.使用ResultSet.getMetadata方法返回ResultSetMetaData引用 b.能够使用getColumnCount此类方法获取信息事务处理 答:1)一系列的动作作为一个不可分的操作; 2)JDBCAPI中使用事务处理步骤: a.用false作为参数调用setAutoCommit方法; b.执行一或多个关于数据库的操作; c.调用commit方法完成改变; d.恢复上次提交后的改变,调用rollback方法. try { con.setAutoCommit(false); Statementstm=con.createStatement(); stm.executeUpdate("insertintostudent(name,age,gpa)values(‘gzhu‘,30,4.8)"); stm.commit(); } catch(SQLExceptione) { try { con.rollback(); } catch(Exceptione) { } }并发控制 答:1)设置隔离级别方法:setTransactionIsolation 2)隔离级别静态变量 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);JDBC2.0应用程序编程接口增强功能 答:1)ResultSet增强: a.可以回卷; b.可以修改; 设置示例:Statementstm=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 2)Statement增强了批量修改能力(batchupdates); 3)更高级的数据类型(例:Struct)。JDBC2.0标准扩展 答:1)JNDI(JavaNamingandDirectoryInterface):解决离散状态下Object的查找; 2)连接池:在内存中保存了一个数据库连接,不需要注册驱动器,提高性能的重要方法。 JDBC基础学习笔记总结与讨论就到这里 |