已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计,第10章 Java数据库连接,主讲:张思民,仰恩大学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); 【见P116 例10-5】,连接SQL Server数据库,【见P325 例10-8】,连接 Oracle 数据库,Class.forName(“oracle.jdbc.Orac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 40816.3-2025工业炉及相关工艺设备能量平衡测试及能效计算方法第3部分:间歇式熔铝炉
- 2024年咸宁辅警招聘考试真题含答案详解(综合卷)
- 2024年兰州辅警招聘考试真题及一套参考答案详解
- 2024年东莞辅警协警招聘考试备考题库附答案详解(夺分金卷)
- 2024年大连辅警协警招聘考试真题附答案详解(夺分金卷)
- 2023年聊城辅警招聘考试题库附答案详解(突破训练)
- 2024年大足县辅警招聘考试题库及答案详解(各地真题)
- 2024年台州辅警招聘考试真题含答案详解(达标题)
- 2024年厦门辅警协警招聘考试真题及答案详解(网校专用)
- 2023年赣州辅警协警招聘考试真题附答案详解(a卷)
- 2025年军队文职人员招聘考试题库附答案(满分必刷)
- 2025赤峰翁牛特旗公立医院招聘29名员额备案制工作人员考试笔试备考试题及答案解析
- 2025高中政治主观题答题模板
- 2025贵州天健福康医养供应链有限责任公司招聘劳动合同制人员18人实施考试参考试题及答案解析
- 2025下半年厦门市总工会招聘工会专干和集体协商指导员50人考试参考题库及答案解析
- 2025年中小学教师职称评定答辩题(附答案)
- 自制小水车课件
- 工会集体协商课件
- 国开2025年《行政领导学》形考作业1-4答案
- 【MOOC答案】《中国文化传承与科技创新》(北京邮电大学)中国慕课章节作业网课答案
- NB-T 10560-2021 风力发电机组技术监督规程
评论
0/150
提交评论