




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上一页上一页下一页下一页返回首页返回首页第第3章章 JAVA 数据库编程数据库编程应用JDBC链接SQL Server 2005数据库上一页上一页下一页下一页返回首页返回首页大纲大纲 nJDBC介绍n实验前的准备相关软件的安装nJDBC数据库访问流程n实验要求上一页上一页下一页下一页返回首页返回首页3.1 JDBCnJavaJava和和JDBCJDBC有着跨平台运行的优势。用有着跨平台运行的优势。用JavaJava和和JDBC JDBC (Java Database Connectivity)编写的数据库程序既可以在编写的数据库程序既可以在WindowsWindows系列操系列操作系统上计算机
2、上运行,也可以在作系统上计算机上运行,也可以在UnixUnix服服务器上运行,还可以在务器上运行,还可以在JavaJava平台支持的数平台支持的数据库设备上运行。据库设备上运行。 nJDBC 是用于执行SQL语句的JAVA应用程序接口,是一套API集合,在这个集合中设置了许多允许JAVA程序连接数据库的框架。上一页上一页下一页下一页返回首页返回首页3.1 JDBCJava应用程序JDBC驱动程序、管理器厂家提供的JDBC驱动程序JDBC-ODBC桥JDBC驱动程序APIODBC驱动程序数据库JDBC API负责与JDBC管理器驱动程序API进行通信,将各个不同的SQL语句发送给它。驱动程序管理
3、器API(对程序员是透明的)与实际连接到数据的各个第三方驱动程序进行通信,并且返回查询的的信息,或者执行由查询规定的操作。上一页上一页下一页下一页返回首页返回首页3.1 JDBCJDBC的主要功能如下:n与一个数据库建立连接(connection)。n向数据库发送SQL语句(statement)。n处理数据库返回的结果(resultset)。上一页上一页下一页下一页返回首页返回首页1、Java应用程序应用程序nJava程序主要包括Java应用程序、java小程序和Servlet,这些类型的程序都可以利用JDBC方法实现对数据库的访问和操作。n主要完成的任务包括:请求与数据库建立连接、向数据库发
4、送SQL请求、为结果集定义存储应用和数据类型、查询结果、处理错误、控制传输、提交、关闭连接等操作。上一页上一页下一页下一页返回首页返回首页2、JDBC管理器管理器nJDBC管理器提供了一个“驱动器管理器”,它能够动态管理和维护数据库查询所需要的所有驱动程序对象,实现Java程序与特定驱动程序的连接,从而体现JDBC与平台无关的特性。n其主要任务包括:为特定数据库选择驱动程序、处理JDBC的初始化调用、为每个驱动程序提供JDBC功能的入口、为JDBC调用执行参数等。上一页上一页下一页下一页返回首页返回首页3、驱动程序、驱动程序n驱动程序处理JDBC方法,向特定数据库发送SQL请求,并为JAVA程
5、序获取结果。nJDBC是独立于数据库管理系统的,每一个数据库都有自己的协议与客户机通信, JDBC利用数据库驱动程序来使用这些数据库引擎。nJDBC驱动程序由数据库和第三方软件商提供,程序中所使用的数据库系统不同,所需要的驱动程序也有所不同。n其任务包括:建立与数据库的连接、向数据库发送请求、翻译用户程序请求、将错误代码格式化成标准的JDBC错误代码上一页上一页下一页下一页返回首页返回首页JDBC驱动程序类型驱动程序类型n类型一 JDBC-ODBC桥接的JDBC驱动程序n通过JDBC-ODBC Bridge的转换,将Java程序中使用的JDBC API转换成ODBC API,然后通过ODBC来
6、从数据库中提取数据。n类型二 把JDBC API直接映射为数据库供应商提供(并非所有数据库供应商都会提供,例如ACCESS就不提供)的专用客户端API的JDBC驱动程序。n通过JDBC-Native API Bridge的转换,将Java程序中使用的JDBC API转换成Native API,然后从数据库中提取数据。n类型三 支持三层JDBC访问的JDBC驱动程序n类型四 完全使用JAVA编写的JDBC驱动程序,它直接与数据库实例对话。上一页上一页下一页下一页返回首页返回首页JDBC API 类类类型类型JDBC类类驱动程序管理驱动程序管理Java.sql.Driverjava.sql.Dri
7、verManagerjava.sql.DrivePropertyInfo数据库连接数据库连接Java.sql.ConnectionSQL语句语句java.sql.Statementjava.sql.PreparedStatementjava.sql.CallableStatement数据数据java.sql.ResultSet错误错误java.sql.SQLExceptionjava.sql.SQLWarning上一页上一页下一页下一页返回首页返回首页JDBC 类层次类层次n 驱动程序管理器驱动程序管理器连接连接连接连接连接连接语句语句语句语句可调用语句可调用语句准备语句准备语句execute
8、Update( )executeQuery( )execute( )getMoreResults( )结果组结果组元数据元数据 数据数据getResultsSet( )上一页上一页下一页下一页返回首页返回首页数据库访问接口数据库访问接口n目前许多数据库均支持SQL,对于由SQL数据库组成的异构数据库系统 ,JDBC和ODBC为访问其异构成员提供了统一的方式。图2.7 “Database Options”对话框 上一页上一页下一页下一页返回首页返回首页安装安装SQL Server 2005的的JDBC程序程序n安装SQL Server 2005的JDBC程序n4、安装后得到3个jar文件:(C:
9、Program FilesMicrosoft SQL Server 2005 Driver for JDBClib) msutil.jar、msbase.jar、mssqlserver.jar,将他们复制到java的lib目录下,如D:jdk1.4libn5、设置系统classpath环境变量,把4中三个文件的路径添加进来。图2.9 Ex_ODBC运行结果上一页上一页下一页下一页返回首页返回首页JDBC数据库访问流程数据库访问流程n1. 建立数据源(odbc)n2. 装入JDBC驱动程序n3. 建立连接n4. 执行SQL语句n5. 检索结果n6. 关闭连接图2.8 为控件添加数据成员上一页上一
10、页下一页下一页返回首页返回首页JDBC数据库访问流程数据库访问流程n在Java.sql中有4个主要的类可以实现数据存储。nDriverManager负责加载和处理给定的JDBC驱动程序nConnection表示同一个特定数据库进行连接的对象nStatement是SQL语句的载体nResultSet是结果集对象上一页上一页下一页下一页返回首页返回首页1. 建立数据源建立数据源n这里所建立的数据源是指建立ODBC数据源,这一点并不是JDBC的要求,而是ODBC所必须的。当使用JDBC-ODBC桥接来建立连接时,必须先建立ODBC数据源。上一页上一页下一页下一页返回首页返回首页2. 装入装入JDBC
11、驱动程序驱动程序n要使用JDBC来访问数据库,需要加载JDBC驱动程序,代码语句: Class.forName()对于JDBC的驱动访问来说,是 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);n对于JDBC-ODBC桥接来说,则是Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);上一页上一页下一页下一页返回首页返回首页3. 建立连接建立连接n要连接一个数据库,必须创建Connection类的一个实例,即调用方法DriverManger.getConnection。 n与数据库
12、建立连接标准方法是调用方法:DriverManager.getConnection(String url, String user, String password);DriverManager.getConnection(String url);返回值是Connection类的实例。nurl标准语法是jdbc:nsubprotocol说明了使用哪种JDBC驱动程序,例如:使用JDBC-ODBC,就写“odbc”,Subname就是数据源名。图2.14 “MFC ClassWizard”对话框上一页上一页下一页下一页返回首页返回首页3. 建立连接建立连接n对于JDBC-ODBC桥接来讲,sub
13、name就是数据源名,为了存取数据,还要提供用户和口令。String url=“jdbc:odbc:source”;Connection con=DriveManager.getConnection(url,“user”, “password”)Source是事先建立的数据源上一页上一页下一页下一页返回首页返回首页4 4执行执行SQLSQL语句语句n建立连接后,就能够向数据库发送SQL语句了。JDBC提供了Statement类来发送SQL语句,Statement类的对象用createStatement方法创建;SQL语句发送以后,返回的结果通常存放在一个ResultSet类的对象中,Resul
14、tSet可以看作是一个表,这个表中包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的getXXX方法,可以检索当前行的各个列,并显示出来。 上一页上一页下一页下一页返回首页返回首页5 5检索结果检索结果n对Result对象进行处理之后,才能将查询结果显示给用户。Result对象包括一个由查询语句返回的一个表ResultSet,这个表中包含所有的查询结果。对Result对象的处理必须逐行进行,ResultSet.next方法使指针下移一行。 上一页上一页下一页下一页返回首页返回首页6 6关闭连接连接关闭连接连接n在对象使用完毕后,应当使用close
15、( )方法解除与数据库的连接,并关闭数据库。例如:con.close();上一页上一页下一页下一页返回首页返回首页JDBC编程实例编程实例/创建顾客consumer表,此表有三个字段:顾客编号id,姓名name,购物总金额totalmoneyimport java.sql.*;public class Create_Tablepublic static void main(String args) String JDriver=sun.jdbc.odbc.JdbcOdbcDriver; /声明jdbc驱动程序类型 String conURL=jdbc:odbc:student; /定义jdbc
16、的url对象 try Class.forName(JDriver); /加载jdbc-odbc桥驱动程序 catch(java.lang.ClassNotFoundException e) System.out.println(forname:+e.getMessage(); try Connection con=DriverManager.getConnection(conURL);/连接数据库URL Statement s=con.createStatement(); /建立Statement类对象 /创建一个含有三个字段的顾客表conumser String query=create t
17、able consumer(id char(10),name char(15),totalmoney integer);s.executeUpdate(query); /执行SQL语句s.close(); /释放statement所连接的数据库及jdbc资源 con.close(); /关闭与数据库的连接 catch(SQLException e) System.out.println(SQLException:+e.getMessage(); 上一页上一页下一页下一页返回首页返回首页示例程序示例程序 Insert_RecordInsert_Record/在上例创建的数据表consumer中插
18、入三个顾客的纪录 import java.sql.*;public class Insert_Recordpublic static void main(String args) String JDriver=sun.jdbc.odbc.JdbcOdbcDriver; String conURL=jdbc:odbc:student; try Class.forName(JDriver); catch(java.lang.ClassNotFoundException e) System.out.println(forname:+e.getMessage(); try Connection con
19、=DriverManager.getConnection(conURL); /使用SQL命令insert插入三条顾客纪录到表中 Statement s=con.createStatement(); String r1=insert into consumer values(00001,王明,360); String r2=insert into consumer values(00002,高强,728); String r3=insert into consumer values(00003,李丽,1182);s.executeUpdate(r1);s.executeUpdate(r2);s.
20、executeUpdate(r3);s.close();con.close(); catch(SQLException e) System.out.println(SQLException:+e.getMessage(); 上一页上一页下一页下一页返回首页返回首页示例程序示例程序 Update_RecordUpdate_Record/修改上例中的第二条和第三条纪录的顾客总消费金额字段的值,并把数据表的内容输出到屏幕上 import java.sql.*;public class Update_Recordpublic static void main(String args) String J
21、driver=sun.jdbc.odbc.JdbcOdbcDriver; String conURL=jdbc:odbc:TestDB; String id=00002,00003; int totalmoney=989,1260; try Class.forName(Jdriver); catch(java.lang.ClassNotFoundException e) System.out.println(forname:+e.getMessage(); try Connection con=DriverManager.getConnection(conURL); 上一页上一页下一页下一页返
22、回首页返回首页示例程序示例程序 Update_RecordUpdate_Record/修改数据库中数据表的内容 PreparedStatement ps=con.prepareStatement(UPDATE consumer set totalmoney=? where id=?); int i=0, idlen=id.length; do ps.setInt(1,totalmoneyi); ps.setString(2,idi); ps.executeUpdate(); +i; while(iid.length); ps.close(); /查询数据库并把数据表的内容输出到屏幕上 Stat
23、ement s=con.createStatement(); ResultSet rs=s.executeQuery(select * from consumer); while(rs.next()System.out.println(rs.getString(id)+t+rs.getString(name)+t+rs.getInt(totalmoney); s.close(); con.close(); catch(SQLExceptione) System.out.println(SQLException:+e.getMessage(); 上一页上一页下一页下一页返回首页返回首页示例程序示例程序 Delete_RecordDelete_Record/在上例创建的数据表consumer中删除第二条记录,然后把数据表的内容输出 import java.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国螺旋埋弧焊管行业发展状况及营销战略研究报告
- 2025-2030年中国营养煲行业运行动态分析与营销策略研究报告
- 2025-2030年中国花椒大料行业运营状况及发展前景分析报告
- 2025-2030年中国膦酸脲行业运行状况与前景趋势分析报告
- 2025-2030年中国胶合板行业十三五规划及发展盈利分析报告
- 2025-2030年中国聚丁烯管行业现状调研及发展潜力分析报告
- 2025-2030年中国纸杯机行业运行状况及前景趋势分析报告
- 2025-2030年中国粽子行业十三五规划及发展盈利分析报告
- 2025江西省建筑安全员-B证考试题库附答案
- 珠海科技学院《边缘计算》2023-2024学年第二学期期末试卷
- 2024并网光伏逆变器技术规范
- 文言文多文本阅读:叔向见韩宣子(附答案解析与译文)
- 系统脱敏治疗的长期疗效跟踪评估
- 二手仪器收购协议书范本
- 香港(2024年-2025年小学二年级语文)人教版期末考试试卷(含答案)
- 浙江省台州市2024年中考语文模拟试题及答案6
- 山水情怀 课件-2024-2025学年高中美术人教版 (2019) 选择性必修2 中国书画
- GA 2139-2024警用防暴臂盾
- 办公软件题库(173道)
- 2024数字化风电场智慧运营
- ISO9001、ISO14001和ISO45001质量环境及职业健康安全三个体系的对比
评论
0/150
提交评论