




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计,清华大学出版社,第10章 java数据库连接,图15.1 学生数据库的组成及相关名词,10.1 建立ODBC数据源,理解ODBC数据源,图15.3 ODBC数据源管理器对话框,图15.7 安装完成后的“ODBC数据源管理器”对话框,10.2 使用JDBC连接数据库,JDBC(Java DataBase Connectivity的缩写),意思是Java程序连接数据库的应用程序接口(API)。 JDBC由一群类和接口组成,通过调用这些类和接口所提供的成员方法,我们可以连接各种不同的数据库,进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。,10.2.1 JDBC结构,JDBC的基本结构由Java程序、JDBC管理器、驱动程序和数据库四部分组成,如图所示。,图 JDBC结构,数据库,ODBC,JDBC,桥接器,Java 应用程序,1Java应用程序 Java应用程序根据JDBC方法实现对数据库的访问和操作。完成的主要任务有:请求与数据库建立连接;向数据库发送SQL请求;查询结果;处理错误;控制传输、提交及关闭连接等操作。,2、 JDBC编程要点 (1)引用java.sql包: import java.sql.*; (2) 使用Class.forName( )方法加载相应数据库的JDBC驱动程序: class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);,(3) 定义JDBC的URL对象。例如: String conURL=“jdbc:odbc:TestDB“; 其中TestDB是我们设置的数据源。 (4) 连接数据库。 Connection s=DriverManager.getConnection(conURL);,(5) 使用SQL语句对数据库进行操作。 (6) 解除Java与数据库的连接并关闭数据库。例如: s.close( );,10.3 JDBC编程实例,10.3.1 创建数据表 【示例程序1】 创建学生表student。此表有三个字段:学号(id)、姓名(name)及成绩(score)。 import java.sql.*; /引入java.sql包 public class c1 public static void main(String args) String JDriver = “sun.jdbc.odbc.JdbcOdbcDriver“; /声明JDBC驱动程序对象 String conURL=“jdbc:odbc:TestDB“; /定义JDBC的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类对象 String query = “create table student ( “ + “id char(10),“ + “name char(15),“ + “score integer“ + “)“; /创建一个含有三个字段的学生表student s.executeUpdate(query); /执行SQL命令,s.close( ); /释放Statement所连接的数据库及JDBC资源 con.close( ); /关闭与数据库的连线 catch(SQLException e) System.out.println(“SQLException: “ +e.getMessage( ); ,其中, create table student(id char(10),name char(15),score integer); 这个SQL语句表示建立一个名为student的表,包含id(字符型,宽度为10)、name(字符型,宽度为15)与 score(数字型)三个字段。 这段程序的操作结果是创建了一个数据库中student表的结构,表中还没有任何记录。,10.3.2 向数据表中插入数据 【示例程序2】 在上例创建的数据表student中插入三个学生的记录。 import java.sql.*; public class c2 public static void main(String args) String JDriver = “sun.jdbc.odbc.JdbcOdbcDriver“; String conURL=“jdbc:odbc:TestDB“; try Class.forName(JDriver); ,catch(java.lang.ClassNotFoundException e) System.out.println(“ForName :“ + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); Statement s=con.createStatement( ); String r1=“insert into student values(“+“0001,王明,80)“; String r2=“insert into student values(“+“0002,高强,94)“; String r3=“insert into student values(“+“0003,李莉,82)“; /使用SQL 命令insert插入三条学生记录到表中 s.executeUpdate(r1);,s.executeUpdate(r2); s.executeUpdate(r3); s.close( ); con.close( ); catch(SQLException e) System.out.println(“SQLException: “ +e.getMessage( ); ,图 程序2的运行结果,10.3.3 更新数据 【示例程序3.java】 修改上例数据表中的第二条和第三条记录的学生成绩字段值,并把修改后的数据表的内容输出到屏幕上。 import java.sql.*; public class c3 public static void main(String args) String JDriver=“sun.jdbc.odbc.JdbcOdbcDriver“; String conURL=“jdbc:odbc:TestDB“; String id=“0002“,“0003“; int score=89,60;,try Class.forName(JDriver); catch(java.lang.ClassNotFoundException e) System.out.println(“ForName :“ + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); /修改数据库中数据表的内容 PreparedStatement ps=con.prepareStatement( “UPDATE student set score=? where id=? “); int i=0,idlen=id.length;,do ps.setInt(1,scorei); ps.setString(2,idi); ps.executeUpdate( );/执行SQL修改命令 +i; while(iid.length); ps.close( ); /查询数据库并把数据表的内容输出到屏幕上 Statement s=con.createStatement( ); ResultSet rs=s.executeQuery(“select * from student“); while(rs.next( ) System.out.println(rs.getString(“id“) + “t“ + rs.getString(“name“)+ “t“ + rs.getInt(“score“);, s.close( ); con.close( ); catch(SQLException e) System.out.println(“SQLException: “ +e.getMessage( ); ,在这个程序中使用了PreparedStatement类,它提供了一系列的set方法来设定位置。请注意程序中PreparedStatement( )方法中的参数“?”。程序中的语句: PreparedStatement ps=con.prepareStatement(“UPDATE student set score=? where id=? “); ps.setInt(1,scorei); /将scorei的值作为SQL语句中第一个问号所代表参数的值 ps.executeUpdate( );,其中“UPDATE student set score=? where id=? “这个SQL语句中各字段的值并没指定,而是以“?”表示。程序必须在执行ps.executeUpdate( )语句之前指定各个问号位置的字段值。例如,用ps.setInt(1,scorei)语句中的参数1指出这里的scorei的值是SQL语句中第一个问号位置的值。当前面两条语句执行完后,才可执行ps.executeUpdate( )语句,完成对一条记录的修改。,程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是: ResultSet rs=s.executeQuery(“select * from student“); while(rs.next( ) System.out.println(rs.getString(“id“) + “t“ + rs.getString(“name“)+ “t“ + rs.getInt(“score“); ,其中,executeQuery( )返回一个ResultSet类的对象rs,代表执行SQL查询语句后所得到的结果集,之后再在while循环中使用对象rs的next( )方法将返回的结果一条一条地取出,直到next( )为false。 运行结果如下: 0001 王明 80 0002 高强 89 0003 李莉 60,10.3.4 删除记录 【示例程序4.java】 删除表中第二条记录,然后把数据表的内容输出。 import java.sql.*; public class c4 public static void main(String args) String JDriver=“sun.jdbc.odbc.JdbcOdbcDriver“; String conURL=“jdbc:odbc:TestDB“; try Class.forName(JDriver); ,catch(java.lang.ClassNotFoundException e) System.out.println(“ForName :“ + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); Statement s=con.createStatement( ); /删除第二条记录 PreparedStatement ps=con.prepareStatement( “delete from student where id=?“); ps.setString(1,“0002“); ps.executeUpdate( ); /执行删除 /查询数据库并把数据表的内容输出到屏幕上,ResultSet rs=s.executeQuery(“select * from student“); while(rs.next( ) System.out.println(rs.getString(“id“)+“t“+ rs.getString(“name“)+“t“ + rs.getString(“score“); s.close( ); con.close( ); catch(SQLException e) System.out.println(“SQLException: “ +e.getMessage( ); ,数据库驱动程序连接数据库,1、下载数据库驱动程序 2、连接URL,连接Access数据库,String conURL=“jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb); “ +“DBQ=TestDB.mdb“; Connection Ex1Con=DriverManager.getConnection(conURL); 【见P312 例10-5】,连接SQL Server数据库,【见P321 例10-8】 DataQuery2.java(用com.microsoft.jdbc.sqlserver.SQLServerDriver驱动,用JTable结合) Example10_81.java(用数据源),连接 Oracle 数据库,Class.forName(“oracle.jdbc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行二代征信培训
- 2024年特种粉末及粉末冶金制品项目资金申请报告代可行性研究报告
- 2023年电大企业信息管理期末复习题
- 2023甘肃省辅警招聘考试题
- 行政办公设备使用操作规范
- 《连锁门店店长管理实务》课件项目6客户关系管理
- 2025年广告设计师职业考试题及答案
- 肿瘤患者体重管理指南
- 沪教版(2024)九年级上册化学期末复习全册知识点考点提纲
- 脑瘫卧床患者的护理
- GB/T 35601-2024绿色产品评价人造板和木质地板
- 2024年度交通安全宣传教育基地共建合作协议3篇
- 《宴请活动》课件
- 养殖场肉牛养殖基地建设项目可行性研究报告
- 重症肺炎课件
- GB/T 30661.10-2024轮椅车座椅第10部分:体位支撑装置的阻燃性要求和试验方法
- 中建铁路信用评价管理办法解读
- 2024-2025学年上海市闵行区六年级(上)期中数学试卷(五四学制)(含解析)
- 空调清洗合同
- 赛事安全应急预案
- 【浅谈中小企业员工流失现状、原因及解决对策(论文)6100字】
评论
0/150
提交评论