190 likes | 425 Views
第十二章 JAVA 数据库连接. 常州信息职业技术学院 (CCIT) 软件学院 2004 年 9 月 1 日. 本讲内容. JDBC 与数据库概述 访问数据库 数据库查询 更新、添加、删除记录 JDBC 事务支持. 1. JDBC 与数据库概述. 数据库编程 种类 SQL 语言 JDBC 框架结构 JDBC-ODBC 桥接器 配置 ODBC 数据源 JDBC 驱动程序. 1. JDBC 与数据库概述. JDBC 典型应用模型 两层模型 三层模型 访问数据库的安全性问题 Applet 信任标记 数据库安全性.
E N D
第十二章 JAVA数据库连接 常州信息职业技术学院(CCIT) 软件学院 2004年9月1日
本讲内容 • JDBC与数据库概述 • 访问数据库 • 数据库查询 • 更新、添加、删除记录 • JDBC事务支持 CCIT 软件学院
1. JDBC与数据库概述 • 数据库编程 • 种类 • SQL语言 • JDBC框架结构 • JDBC-ODBC桥接器 • 配置ODBC数据源 • JDBC驱动程序 CCIT 软件学院
1. JDBC与数据库概述 • JDBC典型应用模型 • 两层模型 • 三层模型 • 访问数据库的安全性问题 • Applet信任标记 • 数据库安全性 CCIT 软件学院
1. JDBC与数据库概述 • JDBC中的主要类(包java.sql) • 驱动程序相关 • Driver,DriverManager • 连接数据库 • Connection • 执行SQL语句 • Statement,PreparedStatement,CallableStatement CCIT 软件学院
1. JDBC与数据库概述 • JDBC中的主要类(包java.sql) • 结果集 • ResultSet • 数据库操作错误 • SQLException,SQLWarning • 数据库及结果集 • DatabaseMetaDate,ResultSetMetaData CCIT 软件学院
1. JDBC与数据库概述 • JDBC中的主要类(包java.sql) • 时间日期 • Date,Time,Timestamp • 其它 • Types,DataTruncation CCIT 软件学院
2.访问数据库 一个简单的数据库查询包括如下步骤:载入JDBC数据库驱动程序,建立与数据库的连接,在建立数据库连接的前提下执行SQL语句,取结果集和结果信息,提交事务,关闭数据库。如果是更新操作,则执行SQL语句后没有结果集。 CCIT 软件学院
2.访问数据库 • 连接数据库 • JDBC URL 语法:jdbc:<子协议>:<数据库子名称> 如:jdbc:odbc:studentdb , jdbc:dbpro:stu jdbc:odbc//www.site.com:5000/stu • 建立连接 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url=“jdbc:odbc:studentdb”; Connection con=DriverManager.getConnection(url,”user”,”pass”); CCIT 软件学院
2.访问数据库 • 了解数据库信息 取得DatabaseMetaData对象来了解数据源的信息 DatabaseMetaData dbma=con.gtMetaData(); DatabaseMetaData对象有很多方法: • 取得数据库的基本信息 getURL,getUserName(),getDatabaseProduceName(),getDatabaseProduceVersion(),isReadOnly(),getDriverName(),getDriverVersion() • 取得表信息 getTabels(…) CCIT 软件学院
2.访问数据库 • 了解数据库信息 • 取得各列的信息 getColumns • 取得索引信息 getIndexInfo CCIT 软件学院
3.数据库查询 所有SQL语句都是通过Statement或其子类(PreparedStatement, CallableStatement )的对象实现。 • Statement 用于一般SQL查询语句的执行 • 创建:Connection对象的createStatement方法 Statement stmt=con.createStatement(); CCIT 软件学院
3.数据库查询 • Statement • 执行:executeQuery,executeUpdate,execute String tsql=“select name,age from table1”; ResultSet rs=stmt.executeQuery(tsql); 非select语句:int nRet=stmt.executeUpdate(tsql); execute方法用于:返回多个结果集、过个更新集 • 关闭:close stmt.close(); CCIT 软件学院
3.数据库查询 • PreparedStatement 可以将SQL语句预编译,还可以内嵌参数 String tsql=“Select * from table1 where id=”+nID+” and name=‘”+strName+”’”; 或:PreparedStatement ps=con.preparedStatement(“delete from table1 where id=? And name=?”); ps.setInt(1,nID); ps.setString(2,strName); ps.executeUpdate(); CCIT 软件学院
3.数据库查询 • CallableStatement 用于执行存储过程 创建:Connection对象的PrepareCall()方法 CallableStatement cs=con.prepareCall(“call Query1”); {call 存储过程名} {call 存储过程名[(?,?,…)]} {?=call 存储过程名[(?,?,…)]} CCIT 软件学院
3.数据库查询 • 读取结果集中的数据 ResultSet类 方法:next,getXXX(XXX为各种类型) 等 ResultSet rs=st.executeQuery(“Select * from table1”); while(rs.next()) { …rs.getInt , rs.getString , … } CCIT 软件学院
4.更新、添加、删除记录 • 修改、插入和删除操作 update,insert,delete 语句 • 创建和删除表 Create Table语句 • 增加和删除表中的列 Alter Table语句 CCIT 软件学院
5.JDBC事务支持 事务由一个或多个SQL语句请求组成,将多条SQL请求组合为事务的目的是维护数据库的完整性。 • Connection对象的方法: setAutoCommit(false) commit rollback CCIT 软件学院
下课! CCIT 软件学院