JAVA学习:数据库连接_第1页
JAVA学习:数据库连接_第2页
JAVA学习:数据库连接_第3页
JAVA学习:数据库连接_第4页
JAVA学习:数据库连接_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、JAVA数据库连接2本章目标p了解JDBC的概念及必要性p了解JDBC驱动程序类型 p理解JDBC 程序的结构p运用JDBC进行数据库编程 3数据库访问技术简介 客户机/服务器应用程序 数据库编程数据库编程ODBCJDBC两个常用的API数据库数据库执行 SQL 语句检索查询结果 4数据库数据库ODBC客户机/服务器 GUI应用程序ODBC(开放式数据库连接)(Microsoft 提供)插 入删 除修 改应用程序编程接口 查询 5JDBC JDBC(Java 数据库连接)(sun公司提供)Java 应用程序编程接口Java应用程序数据库数据库 插 入修 改删 除查询 6JDBC 驱动程序的类型

2、JDBC 驱动程序的类型 JDBC-ODBC桥驱动程序及桥驱动程序及ODBC驱动程序驱动程序 本地本地API部分部分Java驱动程序驱动程序 JDBC-Net 纯纯Java驱动程序驱动程序 本地协议纯本地协议纯Java驱动程序驱动程序 7 JDBC 体系结构 2-1Java 程序 JDBC 驱动程序数据库数据库SQL 命令 结果 8JDBC 体系结构 2-2 应用层应用层 Driver StatementResultSet Connection 各接口驱动层驱动层 9java.sql 包 3-1 接口名 说明 Connection此接口表示与数据的连接PreparedStatement此接口用

3、于执行预编译的 SQL 语句 ResultSet此接口表示了查询出来的数据库数据结果集Statement此接口用于执行 SQL 语句并将数据检索到 ResultSet 中 10java.sql 包 3-2类名类名 说明说明 DriverManager此类用于加载和卸载各种驱动程序并建立与数据库的连接Date此类包含将 SQL 日期格式转换成 Java 日期格式的各种方法Time此类用于表示时间TimeStamp此类通过添加纳秒字段为时间提供更高的精确度 11JDBC 程序访问数据库的步骤 2-1开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 St

4、atement 对象执行语句关闭ResultSet 对象关闭Statement对象关闭连接结 束使用ResultSet对象12Friends 表的结构表的结构JDBC 程序访问数据库的步骤 2-2p它演示访问数据库的各个步骤p在执行示例 1 中的程序之前,SQL Server 中应该存在一个 名为 friends 的表演示:示例 1列名称列名称数据类型数据类型名称 Varchar(50)地址Varchar(50)电话Numeric入职日期Datetime工资Numeric/* 2005 Aptech Limited * 版权所有 */import java.sql.SQLException;i

5、mport java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 这个类演示访问数据库需遵循的各个步骤. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest /* 构造方法 */ protected Jdbctest() /*这是 main 方法. */public static void main(String args) try Class.forName(sun.j

6、dbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(select * from friends); while (rs.next() System.out.print(rs.getS

7、tring(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDate(4) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 13JDBC 查询2-1SQL 查询字符串 executeQuery() 方法 作为参数传递ResultSet 返回查询数据SELE

8、CT name, email, phone FROM colleagues;使用 SQL 语句,查询可编写为:String str = SELECT emp_id, lname, fname FROM colleagues;Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(str);使用 JDBC 编写此查询,则代码为:Statement接口接口14JDBC 查询2-2p它演示 SQL 中 sum( ) 方法的用法演示:示例 2/* * Jdbctest2 */import java.sql.SQ

9、LException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 这个类演示 SQL 中 sum() 方法的用法 * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest2 /* 构造方法*/ protected Jdbctest2() /* 这是 main 方法*/ public static void main(String args) try Cl

10、ass.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery( select hiredate, sum(salary) from friends group

11、 by hiredate); while (rs.next() System.out.print(rs.getDate(1) + t); System.out.print(rs.getInt(2) + t); System.out.println( ); rs.close; s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 15演示:示例 3p它演示 SQL 中 INSERT 语句的用法/* * Jdbctest3 */import java.sql.SQLException;import java.

12、sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 这个类演示 INSERT 语句的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest3 /* 构造方法 */ protected Jdbctest3() JDBC 插入数据实现/* 这是 main 方法*/public static void main(String args) try Class.forName(sun.

13、jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; String str = INSERT INTO “ + friends(name,address,salary)“ + VALUES(朱八,深圳 ,25690); Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); int rowcoun

14、t = s.executeUpdate(str); String str1 = select name, sum(salary) “ +from friends + group by name; ResultSet rs = s.executeQuery(str1); while (rs.next() System.out.print(rs.getString(1) + t); System.out.print(rs.getInt(2) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLExce

15、ption ce) System.out.println(ce); 16JDBC 删除和修改实现p它演示 SQL 中各种命令的用法演示:示例 4/* * Jdbc2 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/* 这这个类演示 SQL 中命令的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbc2 /* 构造方法.*/ protected Jd

16、bc2() public static void main(String args) Connection con; Statement stmt; String url; String sql; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try url = jdbc:odbc:test; con = DriverManager.getConnection(url); sql = Delete from friends wh

17、ere rtrim(name)like张三 ; System.out.println( ); stmt = con.createStatement(); stmt.executeUpdate(sql); System.out.println(张三 的记录已删除“); stmt.close(); con.close(); con = DriverManager.getConnection(url); sql = Update friends set address=青岛 where “ + rtrim(name) like 李四; ; System.out.println( ); stmt =

18、con.createStatement(); stmt.executeUpdate(sql); stmt.close(); con.close(); System.out.println(李四的记录已更新); catch (SQLException ce) System.out.println(ce); 17PreparedStatement接口 3-1 PreparedStatement接口(预编译的 SQL 语句)PreparedStatement 用于提高运行时效率执行 PreparedStatement 对象比执行 Statement 对象快Statement 接口接口18Prepar

19、edStatement接口 3-2 p它演示了PreparedStatement 的用法演示:示例 5/* * CourseAppl */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;import java.sql.PreparedStatement;/* 这个类演示 SQL 中 PreparedStatement 的用法*/class CourseAppl priv

20、ate Connection con;private String url;private String serverName;private String portNumber;private String databaseName;private String userName;private String password;private String sql;CourseAppl() url = jdbc:microsoft:sqlserver:/; serverName = “localhost; portNumber = 1433; databaseName = “test; us

21、erName = “sa; password = “sa; private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Connection getConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnectionU

22、rl(), userName, password); if (con != null) System.out.println(连接成功!); catch (Exception e) e.printStackTrace(); System.out.println(getConnection() 内的错误跟踪: + e.getMessage(); return con; public void display() try con = getConnection(); PreparedStatement pstmt = con.prepareStatement( UPDATE friends SET

23、 salary = ? WHERE name like ?); pstmt.setInt(1, 10000 ); pstmt.setString(2, 李四 ); pstmt.executeUpdate(); System.out.println(“记录已更新!); Statement s = con.createStatement(); String sql = SELECT * FROM friends ; ResultSet rs = s.executeQuery(sql); while (rs.next() System.out.println( ); System.out.print

24、(rs.getInt(1) + ); System.out.println(rs.getInt(5); catch (SQLException ce) System.out.println(ce); public static void main(String args) CourseAppl retObj = new CourseAppl(); retObj.display(); 19PreparedStatement 接口 3-3 p它演示在基于条件的 SQL 查询中如何使用 PreparedStatement,其中条件在 IN 参数中给出演示:示例 6import java.sql.SQ

25、LException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.PreparedStatement;/* 这个类演示在基于条件的 SQL 查询中使用 PreparedStatement*/class RetrieveRecords private Connection con;private String url;private String serverName, portNumber, databaseName, userName;pr

26、ivate String sql;RetrieveRecords() url = jdbc:microsoft:sqlserver:/; serverName = “localhost; portNumber = 1433; databaseName = “test; userName = “sa; password = “sa;private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Conne

27、ction getConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnectionUrl(), userName, password); if (con != null) System.out.println(连接成功!); catch (Exception e) e.printStackTrace(); System.out.println(“getConnection() 内的错误跟踪: + e.getM

28、essage(); return con; public void display() try con = getConnection(); sql = select * from Friends where Salary ?; PreparedStatement pstmt = con.prepareStatement( sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); pstmt.setInt(1, 5000); ResultSet rs = pstmt.executeQuery(); while (rs.

29、next() System.out.print(rs.getString(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDate(4) + t); System.out.print(rs.getInt(5) + t); System.out.println( ); rs.close(); pstmt.close(); con.close(); catch (SQLException ce) System.out.println(

30、ce); /* 这是 main 方法*/ public static void main(String args) RetrieveRecords retRec = new RetrieveRecords(); retRec.display(); 20使用结果集 3-1 pResultSet 对象完全依赖于 Statement 对象和 Connection 对象p每次执行 SQL 语句时,都会用新的结果重写结果集p当相关的 Statement 关闭时,ResultSet 对象会自动关闭Next( )get()此方法将光标从当前位置下移一行 从 ResultSet 对象返回数据 21使用结果集 3-2 p它演示对当前行的处理p使用 next() 方法时,记录是按顺序处理的p必须按照数据返回的顺序处理每行中的数据

温馨提示

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

评论

0/150

提交评论