版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计JDBC JDBC 目标目标 深刻理解深刻理解JDBC的概念及的概念及JDBC API主主 要内容要内容 熟练掌握熟练掌握JDBC应用程序开发流程应用程序开发流程 熟练掌握应用熟练掌握应用JDBC实现数据库记录的实现数据库记录的 插入、删除和修改操作插入、删除和修改操作 熟练掌握应用熟练掌握应用JDBC查询数据库记录查询数据库记录 面向对象程序设计JDBC JDBC基础基础 lJDBC概述概述 在两层模型中,在两层模型中, Java applet 或应或应 用程序将直接与数用程序将直接与数 据库进行对话据库进行对话 图13.1 JDBC数据库访问两层模型 面向对象程序设计JDB
2、C 在三层模型中,命令先是被发送到服务的在三层模型中,命令先是被发送到服务的“中中 间层间层”,然后由它将,然后由它将 SQL 语句发送给数据库语句发送给数据库 JDBC数据库访问三层模型 面向对象程序设计JDBC l使用使用JDBC与数据库建立连接与数据库建立连接 JDBC是一种底层是一种底层API,它可以直接调用,它可以直接调用SQL语句,语句, 也是构造高级也是构造高级API和数据库开发工具的基础。和数据库开发工具的基础。 JDBC2.0中的类和接口包括如表中的类和接口包括如表11.1所示所示 表11.1 JDBC2.0类和接口 类/接口名类/接口功能 java.sql.Connecti
3、on完成对某一个指定数据库的连接功能完成对某一个指定数据库的连接功能 java.sql.Statement在一个给定的连接中作为在一个给定的连接中作为SQL语句执行的容器语句执行的容器 java.sql.PreparedStatement用于执行预编译的用于执行预编译的SQL语句语句 java.sql.CallableStatement用于返回执行数据库中存储过程调用用于返回执行数据库中存储过程调用 java.sql.ResultSet查询语句返回的结果集查询语句返回的结果集 面向对象程序设计JDBC DriverManager类类 DriverManager 类是类是 JDBC 的管理层,作
4、用的管理层,作用 于用户和驱动程序之间。它跟踪可用的驱动程于用户和驱动程序之间。它跟踪可用的驱动程 序,并在数据库和相应驱动程序之间建立连接。序,并在数据库和相应驱动程序之间建立连接。 使用使用JDBC-ODBC 桥驱动程序建立连接的语句桥驱动程序建立连接的语句 如下:如下: Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); String url = jdbc:odbc:happychat; DriverManager.getConnection(url, sa, ); 面向对象程序设计JDBC Connection类类 Connection 对象代表与
5、数据库的连接。连接过程对象代表与数据库的连接。连接过程 包括所执行的包括所执行的 SQL 语句和在该连接上所返回的结语句和在该连接上所返回的结 果。一个应用程序可与单个数据库有一个或多个果。一个应用程序可与单个数据库有一个或多个 连接,也可以与多个数据库有连接连接,也可以与多个数据库有连接 下面的语句打开一个与位于下面的语句打开一个与位于 URL jdbc:odbc:happychat 的数据库的连接。所用的用户的数据库的连接。所用的用户 标识符为标识符为 sa ,口令为,口令为 。 String url = jdbc:odbc:happychat; Connection conn = Dri
6、verManager.getConnection(url, sa, ); 面向对象程序设计JDBC Statement类类 Statement 接口提供了三种执行接口提供了三种执行 SQL 语句的方法:语句的方法: executeQuery、executeUpdate 和和 execute,使用,使用 哪一个方法由哪一个方法由 SQL 语句所产生的内容决定。语句所产生的内容决定。 方法方法executeQuery 用于产生单个结果集的语句,例如用于产生单个结果集的语句,例如 SELECT 语句。语句。 方法方法executeUpdate 用于执行用于执行 INSERT、UPDATE 或或 DE
7、LETE 语句以及语句以及 SQL DDL(数据定义语言)语句。(数据定义语言)语句。 例如例如 CREATE TABLE 和和 DROP TABLE。INSERT、UPDATE 或或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。语句的效果是修改表中零行或多行中的一列或多列。 executeUpdate 的返回值是一个整数,指示受影响的行数(即更的返回值是一个整数,指示受影响的行数(即更 新计数)。对于新计数)。对于 CREATE TABLE 或或 DROP TABLE 等不操作行等不操作行 的语句,的语句,executeUpdate 的返回值总为零。的返回值总为零。 方法方法
8、execute 用于执行返回多个结果集、多个更新计数或二者用于执行返回多个结果集、多个更新计数或二者 组合的语句组合的语句 面向对象程序设计JDBC ResultSet类类 用于获得查询结果用于获得查询结果 面向对象程序设计JDBC ResultSet.next 方法用于移动到方法用于移动到 ResultSet 中中 的下一行,使下一行成为当前行。结果集一般是的下一行,使下一行成为当前行。结果集一般是 一个表,其中有查询所返回的列标题及相应的值。一个表,其中有查询所返回的列标题及相应的值。 执行执行 SQL 语句并输出结果集的语句如下:语句并输出结果集的语句如下: Statement stmt
9、 = conn.createStatement(); ResultSet rs = stmt.executeQuery(SELECT u_name, u_pass FROM users); while (rs.next() / 打印当前行的值。打印当前行的值。 String name = r.getString(u_name); String pass = r.getString(u_pass); System.out.println(name + + pass); 面向对象程序设计JDBC 数据库操作过程数据库操作过程 加载驱动程序加载驱动程序 通过通过DriverManager得到一个与数
10、据库得到一个与数据库 连接的句柄连接的句柄 通过连接句柄绑定要执行的语句通过连接句柄绑定要执行的语句 接收执行结果接收执行结果 可选的对结果的处理可选的对结果的处理 关闭数据库连接关闭数据库连接 面向对象程序设计JDBC l SQL Server 2000 Driver For JDBC驱驱 动程序动程序 Microsoft SQL Server 2000 Driver for JDBC 是一种用以面向企业级是一种用以面向企业级Java环境提供具备环境提供具备 高度可伸缩性与可靠性连通能力的高度可伸缩性与可靠性连通能力的Type 4 JDBC驱动程序。这种驱动程序为驱动程序。这种驱动程序为JD
11、BC提供了通提供了通 过具备过具备Java支持能力的支持能力的applet、应用程序或应用、应用程序或应用 服务器访问服务器访问SQL Server 2000的能力。现在,的能力。现在, Java开发人员可以利用这种能够通过开发人员可以利用这种能够通过Internet与与 企业内部网络提供高性能点对点企业内部网络提供高性能点对点n层层SQL Server 2000访问能力的驱动程序来充分享受访问能力的驱动程序来充分享受SQL Server 2000所提供的丰富功能与强壮特性。所提供的丰富功能与强壮特性。 面向对象程序设计JDBC 获得程序获得程序 从微软的网站上下载驱动程序:从微软的网站上下载
12、驱动程序:SQLServer2000For JDBC驱动程序,然后将它安装好。驱动程序,然后将它安装好。(比如安装目录是比如安装目录是 D:SQLDriver For JDBC。) 配置环境配置环境 修改环境变量中的修改环境变量中的CLASSPATH,把,把SQL Server 2000 For JDBC 驱动程序安装目录下的如下目录追加到驱动程序安装目录下的如下目录追加到CLASSPATH 中去。中去。 D:SQLDriverForJDBClibmsbase.jar;D:SQLDriverForJ DBClibmssqlserver.jar; D:SQLDriverForJDBCmsutil
13、.jar; 一旦一旦SQL Server 2000 Driver For JDBC驱动程序驱动程序 安装配置好,即可用于安装配置好,即可用于SQL Server 2000的数据库访的数据库访 问。问。 面向对象程序设计JDBC JDBC的查询发送机制的查询发送机制 lStatement接口接口 Statement接口用于执行不带参数的简单接口用于执行不带参数的简单SQL语句。语句。 ReparedStatement接口和接口和Callablestatement接口都是继承了接口都是继承了 Statement接口。接口。 创建一个创建一个Statement类的实例的方法很简单,只需调用类类的实例
14、的方法很简单,只需调用类 Connection中的方法中的方法createStatement()就可以了。一般形式如下:就可以了。一般形式如下: Connection con=DriverManager.getConnection(URL,user,password) Statement sm=con.createStatement(); 创建了创建了Statement类的实例后,可调用其中的方法执行类的实例后,可调用其中的方法执行SQL语语 句,句,JDBC中提供了三种执行方法,它们是中提供了三种执行方法,它们是 execute(),executeQuery(),executeUpdate(
15、) 面向对象程序设计JDBC lPreparedStatement接口接口 PreparedStatement类是类是Statement类的子类,它直接类的子类,它直接 继承并重载了继承并重载了Statement的方法,的方法,PrepardStatement 类有两大特点:类有两大特点: 一个一个PreparedStatement的对象中包含的的对象中包含的SQL语句是预编译的,语句是预编译的, 因此当需要多次执行同一条因此当需要多次执行同一条SQL语句时,利用语句时,利用 PreparedStatement传送这条传送这条SQL语句可以大大应用扩展执行语句可以大大应用扩展执行 效率。效率。
16、 PreparedStatement的对象所包含的的对象所包含的SQL语句中允许有一个或语句中允许有一个或 多个输入参数多个输入参数 面向对象程序设计JDBC 创建创建PreparedStatement对象对象 创建一个创建一个PreparedStatement类的对象也只需在建立连接后,类的对象也只需在建立连接后, 调用调用Connection类中的方法类中的方法prepareStatement()创建一个创建一个 PreparedStatement的对象,其中包含一条带参数的的对象,其中包含一条带参数的SQL语句。语句。 一般形式如下:一般形式如下: PreparedStatement p
17、sm=con.prepareStatement(INSERT INTO users(u_name,u_pass) VALUES(?,?); 输入参数的赋值输入参数的赋值 对上例,如果将第一个参数设为对上例,如果将第一个参数设为zhao,第二个参数设为,第二个参数设为 zhao0212,就会在,就会在“users”表中插入的记录一条新的记录,表中插入的记录一条新的记录, 实现该功能的语句为:实现该功能的语句为: psm.setString(1,“zhao”); psm.setString(2,“zhao0212”); 面向对象程序设计JDBC 应用实例应用实例 l 建立数据库建立数据库 User
18、s表:保存用户注册信息。包括用户名表:保存用户注册信息。包括用户名 (U_Name)、用户密码()、用户密码(U_Pass)、性别)、性别 (U_Gender)、年龄()、年龄(U_Age)和电子邮件地址)和电子邮件地址 (U_Email)。)。 History表:保存用户聊天信息。包括聊天编号表:保存用户聊天信息。包括聊天编号 (H_No)、聊天用户()、聊天用户(H_User)、聊天时间)、聊天时间 (H_Time)和聊天内容()和聊天内容(U_Content) 面向对象程序设计JDBC 创建数据库和表的脚本如下创建数据库和表的脚本如下: CREATE DATABASE HappyChat
19、 GO USE HappyChat CREATE TABLE users ( U_Name VARCHAR(16) PRIMARY KEY, U_Pass VARCHAR(16) NOT NULL, U_Gender CHAR(2) NOT NULL, U_Age INT NOT NULL, U_Email VARCHAR(20) NOT NULL ) CREATE TABLE history ( H_No INT IDENTITY(1,1), H_User VARCHAR(16) NOT NULL, H_Time DATETIME NOT NULL, U_Content VARCHAR(60
20、) ) CREATE PROC delRecord name CHAR(16) AS DELETE FROM Users WHERE U_name=name 面向对象程序设计JDBC l插入、修改和删除操作插入、修改和删除操作 JDBC插入、修改和删除数据库数据插入、修改和删除数据库数据 /JDBC插入、修改和删除演示程序插入、修改和删除演示程序 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.sql.*; public class JdbcModif
21、yDemo extends JFrame implements ActionListener JPanel pnlMain; JLabel lblName,lblPass; JTextField txtName,txtPass; JButton btnInsert,btnSave,btnUpdate,btnDelete; public JdbcModifyDemo() super(JDBC插入、修改和删除演示插入、修改和删除演示); pnlMain=new JPanel(); lblName=new JLabel(用户名用户名:) 面向对象程序设计JDBC lblPass=new JLabel
22、(密码密码:); txtName=new JTextField(16); txtPass=new JTextField(16); btnInsert=new JButton(插入插入); btnInsert.addActionListener(this); btnSave=new JButton(保存保存); btnSave.setEnabled(false); btnSave.addActionListener(this); btnUpdate=new JButton(修改修改); btnUpdate.addActionListener(this); btnDelete=new JButto
23、n(删除删除); btnDelete.addActionListener(this); pnlMain.add(lblName); pnlMain.add(txtName); pnlMain.add(lblPass); pnlMain.add(txtPass); pnlMain.add(btnInsert); pnlMain.add(btnSave); pnlMain.add(btnUpdate); pnlMain.add(btnDelete); setContentPane(pnlMain); 面向对象程序设计JDBC setSize(250,150); setVisible(true);
24、public void actionPerformed(ActionEvent ae) if (ae.getSource()=btnInsert) initComponent(); if (ae.getSource()=btnSave) saveRecord(); if (ae.getSource()=btnUpdate) updateRecord(); if (ae.getSource()=btnDelete) int intChoice=JOptionPane.showConfirmDialog (null,真的要删除该记录吗真的要删除该记录吗?,确认删除确认删除 ,JOptionPane
25、.YES_NO_OPTION); if (intChoice=JOptionPane.YES_OPTION) deleteRecord(); public Connection openDatabase() 面向对象程序设计JDBC String url = jdbc:odbc:HappyChat; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn=DriverManager.getConnection(url,sa,); return conn; catch(Exception e) JOptionPane.sh
26、owMessageDialog(null,连接数据库失败连接数据库失败!); return null; public void initComponent() txtName.setText(); txtPass.setText(); btnSave.setEnabled(true); 面向对象程序设计JDBC public void saveRecord() try PreparedStatement psm=openDatabase().prepareStatement(Insert users(U_Name,U_Pass) values(?,?); psm.setString(1,txt
27、Name.getText(); psm.setString(2,txtPass.getText(); psm.executeUpdate(); JOptionPane.showMessageDialog(null,记录保存成功记录保存成功!); psm.close(); catch(Exception e) JOptionPane.showMessageDialog(null,记录插入失败记录插入失败!); public void updateRecord() try 面向对象程序设计JDBC Statement sm=openDatabase().createStatement(); Str
28、ing strUpdate=update users set U_pass=+txtPass.getText() + where U_name=+txtName.getText()+; sm.executeUpdate(strUpdate); JOptionPane.showMessageDialog(null,记录修改成功记录修改成功!); sm.close(); catch(Exception e) JOptionPane.showMessageDialog(null,记录修改失败记录修改失败!); public void deleteRecord() try CallableStatem
29、ent csm=openDatabase().prepareCall(call delRecord(?); csm.setString(1,txtName.getText(); csm.execute(); 面向对象程序设计JDBC JOptionPane.showMessageDialog(null,记录删除成功记录删除成功!); csm.close(); catch(Exception e) JOptionPane.showMessageDialog(null,记录删除失败记录删除失败!); public static void main(String args) new JdbcModi
30、fyDemo(); 面向对象程序设计JDBC l查询数据库查询数据库 使用使用JDBC查询数据库内容。查询数据库内容。 /JDBC查询数据库演示程序查询数据库演示程序 import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; public class JdbcQueryDemo extends Frame implements ActionListener JLabel lblName; JTextArea taResult; JPanel pnlMain; JTextField t
31、xtName; JButton btnQuery; public JdbcQueryDemo() setLayout(new BorderLayout(); lblName=new JLabel(用户名用户名:); taResult=new JTextArea(); 面向对象程序设计JDBC btnQuery=new JButton(查询查询); txtName=new JTextField(12); pnlMain=new JPanel(); pnlMain.setBackground(Color.ORANGE); pnlMain.add(lblName); pnlMain.add(txtN
32、ame); pnlMain.add(btnQuery); add(North,pnlMain); add(Center,taResult); taResult.setEditable(false); btnQuery.addActionListener(this); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setSize(300,200); setTitle(聊天信息查询聊天信息查询); setVisible(true); public v
33、oid actionPerformed(ActionEvent evt) 面向对象程序设计JDBC if(evt.getSource()=btnQuery) taResult.setFont(new Font(宋体宋体,Font.PLAIN,14); taResult.setText(-查询结果查询结果- -); taResult.append(n+编号编号+ 姓名姓名 + 聊天时间聊天时间+ 聊天内容聊天内容+n); taResult.append(- -+n); try dispalyHistory(); catch(SQLException e) JOptionPane.showMess
34、ageDialog(null,数据查询数据查询 错误错误!); public void dispalyHistory() throws SQLException String bh,yhm,ltsj,ltnr; String strQuery; try 面向对象程序设计JDBC Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) JOptionPane.showMessageDialog(null,驱动程序错误驱动程序错误!); return; Connection con=DriverManager.getConnection(jdbc:odbc:HappyChat); Statement sql=con.createStatement(); strQuery=select * from hist
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省保定市莲池区冀英学校2026年初三4月联考试题物理试题试卷含解析
- 2025-2030中国智慧农业传感器技术成熟度与规模化应用障碍研究报告
- 河南聚焦重点中学2025-2026学年初三下学期期中考试物理试题(A卷)含解析
- 重庆市丰都县琢成学校2025-2026学年初三下学期第一次五校联考数学试题试卷含解析
- 2025-2030中国折叠屏手机良品率提升与消费者使用痛点调研报告
- 审计质量管控制度汇编
- 2025-2030中国建筑钢材行业智能制造转型案例研究
- 2025-2030中国建筑钢材市场需求预测模型构建与应用
- 2025-2030中国建筑装饰照明产品光污染防控与美学价值平衡
- 上海市浦东新区南片联合体2026年全国初三模拟考一全国I卷数学试题含解析
- 2026中国远洋海运集团全球物流基础设施投资、建设、运营人才招聘16人笔试备考试题及答案解析
- 2026年宁夏公务员考试《行测》试题及答案
- 2026年《必背60题》护理硕士(MNS)26届考研复试高频面试题包含详细解答
- 2025中智咨询招聘(行测)综合能力测试题附答案
- 2025年职业卫生检测职业卫生标准更新考试试题及答案
- GB/T 18324-2025滑动轴承铜合金轴套尺寸和公差
- 2025年书记员考试历年真题及答案
- GB/T 46561-2025能源管理体系能源管理体系审核及认证机构要求
- 活动板房临时施工方案
- 医学气管切开术讲解专题课件
- 安邦护卫集团总部及下属单位招聘笔试题库2025
评论
0/150
提交评论