




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计清华大学出版社第10章java数据库连接Java语言程序设计清华大学出版社第10章java数据库连1图15.1学生数据库的组成及相关名词图15.1学生数据库的组成及相关名词210.1建立ODBC数据源
理解ODBC数据源10.1建立ODBC数据源理解ODBC数据源3图15.3ODBC数据源管理器对话框图15.3ODBC数据源管理器对话框4图15.7安装完成后的“ODBC数据源管理器”对话框图15.7安装完成后的“ODBC数据源管理器”对话框510.2使用JDBC连接数据库JDBC(JavaDataBaseConnectivity的缩写),意思是Java程序连接数据库的应用程序接口(API)。JDBC由一群类和接口组成,通过调用这些类和接口所提供的成员方法,我们可以连接各种不同的数据库,进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。10.2使用JDBC连接数据库JDBC(610.2.1JDBC结构
JDBC的基本结构由Java程序、JDBC管理器、驱动程序和数据库四部分组成,如图所示。10.2.1JDBC结构JDBC的基本结7图JDBC结构
数据库ODBCJDBC桥接器Java应用程序图JDBC结构数据库ODBCJDBC桥接器Java81.Java应用程序Java应用程序根据JDBC方法实现对数据库的访问和操作。完成的主要任务有:请求与数据库建立连接;向数据库发送SQL请求;查询结果;处理错误;控制传输、提交及关闭连接等操作。1.Java应用程序92、JDBC编程要点
(1)引用java.sql包:importjava.sql.*;(2)使用Class.forName()方法加载相应数据库的JDBC驱动程序:class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2、JDBC编程要点10
(3)定义JDBC的URL对象。例如:StringconURL="jdbc:odbc:TestDB";其中TestDB是我们设置的数据源。(4)连接数据库。Connections=DriverManager.getConnection(conURL);(3)定义JDBC的URL对象。例如:11(5)使用SQL语句对数据库进行操作。(6)解除Java与数据库的连接并关闭数据库。例如:s.close();(5)使用SQL语句对数据库进行操作。1210.3JDBC编程实例10.3.1创建数据表【示例程序1】创建学生表student。此表有三个字段:学号(id)、姓名(name)及成绩(score)。importjava.sql.*;//引入java.sql包publicclassc1{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";//声明JDBC驱动程序对象StringconURL="jdbc:odbc:TestDB";//定义JDBC的URL对象try{Class.forName(JDriver);//加载JDBC-ODBC桥驱动程序}10.3JDBC编程实例10.3.1创建数据表13catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//连接数据库URLStatements=con.createStatement();//建立Statement类对象Stringquery="createtablestudent("+"idchar(10),"+"namechar(15),"+"scoreinteger"+")";//创建一个含有三个字段的学生表students.executeUpdate(query);//执行SQL命令catch(java.lang.ClassNotFou14s.close();//释放Statement所连接的数据库及JDBC资源con.close();//关闭与数据库的连线}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}s.close();//释放Stateme15其中,createtablestudent(idchar(10),namechar(15),scoreinteger);这个SQL语句表示建立一个名为student的表,包含id(字符型,宽度为10)、name(字符型,宽度为15)与score(数字型)三个字段。这段程序的操作结果是创建了一个数据库中student表的结构,表中还没有任何记录。其中,1610.3.2向数据表中插入数据【示例程序2】在上例创建的数据表student中插入三个学生的记录。importjava.sql.*;publicclassc2{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";try{Class.forName(JDriver);}10.3.2向数据表中插入数据17catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);Statements=con.createStatement();Stringr1="insertintostudentvalues("+"'0001','王明',80)";Stringr2="insertintostudentvalues("+"'0002','高强',94)";Stringr3="insertintostudentvalues("+"'0003','李莉',82)";//使用SQL命令insert插入三条学生记录到表中s.executeUpdate(r1);catch(java.lang.ClassNotFou18s.executeUpdate(r2);s.executeUpdate(r3);s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}s.executeUpdate(r2);19图程序2的运行结果图程序2的运行结果2010.3.3更新数据【示例程序3.java】修改上例数据表中的第二条和第三条记录的学生成绩字段值,并把修改后的数据表的内容输出到屏幕上。importjava.sql.*;publicclassc3{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";String[]id={"0002","0003"};int[]score={89,60};10.3.3更新数据21try{Class.forName(JDriver);}catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//修改数据库中数据表的内容PreparedStatementps=con.prepareStatement("UPDATEstudentsetscore=?whereid=?");inti=0,idlen=id.length;try{22do{ps.setInt(1,score[i]);ps.setString(2,id[i]);ps.executeUpdate();//执行SQL修改命令++i;}while(i<id.length);ps.close();//查询数据库并把数据表的内容输出到屏幕上Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));do{ps.setInt(1,score[i]);23}s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}}24在这个程序中使用了PreparedStatement类,它提供了一系列的set方法来设定位置。请注意程序中PreparedStatement()方法中的参数“?”。程序中的语句:PreparedStatementps=con.prepareStatement("UPDATEstudentsetscore=?whereid=?");ps.setInt(1,score[i]);//将score[i]的值作为SQL语句中第一个问号所代表参数的值ps.executeUpdate();在这个程序中使用了PreparedState25其中"UPDATEstudentsetscore=?whereid=?"这个SQL语句中各字段的值并没指定,而是以“?”表示。程序必须在执行ps.executeUpdate()语句之前指定各个问号位置的字段值。例如,用ps.setInt(1,score[i])语句中的参数1指出这里的score[i]的值是SQL语句中第一个问号位置的值。当前面两条语句执行完后,才可执行ps.executeUpdate()语句,完成对一条记录的修改。其中"UPDATEstudentset26程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是:ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));}程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是:27其中,executeQuery()返回一个ResultSet类的对象rs,代表执行SQL查询语句后所得到的结果集,之后再在while循环中使用对象rs的next()方法将返回的结果一条一条地取出,直到next()为false。运行结果如下:0001王明800002高强890003李莉60其中,executeQuery()返回一个ResultSe2810.3.4删除记录【示例程序4.java】删除表中第二条记录,然后把数据表的内容输出。importjava.sql.*;publicclassc4{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";try{Class.forName(JDriver);}10.3.4删除记录29catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);Statements=con.createStatement();//删除第二条记录PreparedStatementps=con.prepareStatement("deletefromstudentwhereid=?");ps.setString(1,"0002");ps.executeUpdate();//执行删除//查询数据库并把数据表的内容输出到屏幕上catch(java.lang.ClassNotFo30ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getString("score"));}s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}ResultSetrs=s.executeQu31数据库驱动程序连接数据库1、下载数据库驱动程序2、连接URL数据库驱动程序连接数据库1、下载数据库驱动程序32连接Access数据库StringconURL="jdbc:odbc:Driver={MicroSoftAccessDriver(*.mdb)};"+"DBQ=TestDB.mdb";ConnectionEx1Con=DriverManager.getConnection(conURL);【见P312例10-5】连接Access数据库StringconURL="jdb33连接SQLServer数据库【见P321例10-8】DataQuery2.java(用com.microsoft.jdbc.sqlserver.SQLServerDriver驱动,用JTable结合)Example10_81.java(用数据源)连接SQLServer数据库【见P321例10-8】34连接Oracle数据库Class.forName(“oracle.jdbc.OracleDriver”).newInstance();
String
dbURL=“jdbc:oracle:thin:@yourservername:1521:yoursid”;
String
user
=
“youruser”;
String
password
=
“yourpassword”;
Connection
c
=
null;
c
=
DriverManager.getConnection(dbURL,user,password);
oracle.jdbc.OracleDriver是一个类,在oracle/jdbc目录下有一个OracleDriver.class的文件。连接Oracle数据库Class.forName(“or35Java语言程序设计清华大学出版社第10章java数据库连接Java语言程序设计清华大学出版社第10章java数据库连36图15.1学生数据库的组成及相关名词图15.1学生数据库的组成及相关名词3710.1建立ODBC数据源
理解ODBC数据源10.1建立ODBC数据源理解ODBC数据源38图15.3ODBC数据源管理器对话框图15.3ODBC数据源管理器对话框39图15.7安装完成后的“ODBC数据源管理器”对话框图15.7安装完成后的“ODBC数据源管理器”对话框4010.2使用JDBC连接数据库JDBC(JavaDataBaseConnectivity的缩写),意思是Java程序连接数据库的应用程序接口(API)。JDBC由一群类和接口组成,通过调用这些类和接口所提供的成员方法,我们可以连接各种不同的数据库,进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。10.2使用JDBC连接数据库JDBC(4110.2.1JDBC结构
JDBC的基本结构由Java程序、JDBC管理器、驱动程序和数据库四部分组成,如图所示。10.2.1JDBC结构JDBC的基本结42图JDBC结构
数据库ODBCJDBC桥接器Java应用程序图JDBC结构数据库ODBCJDBC桥接器Java431.Java应用程序Java应用程序根据JDBC方法实现对数据库的访问和操作。完成的主要任务有:请求与数据库建立连接;向数据库发送SQL请求;查询结果;处理错误;控制传输、提交及关闭连接等操作。1.Java应用程序442、JDBC编程要点
(1)引用java.sql包:importjava.sql.*;(2)使用Class.forName()方法加载相应数据库的JDBC驱动程序:class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2、JDBC编程要点45
(3)定义JDBC的URL对象。例如:StringconURL="jdbc:odbc:TestDB";其中TestDB是我们设置的数据源。(4)连接数据库。Connections=DriverManager.getConnection(conURL);(3)定义JDBC的URL对象。例如:46(5)使用SQL语句对数据库进行操作。(6)解除Java与数据库的连接并关闭数据库。例如:s.close();(5)使用SQL语句对数据库进行操作。4710.3JDBC编程实例10.3.1创建数据表【示例程序1】创建学生表student。此表有三个字段:学号(id)、姓名(name)及成绩(score)。importjava.sql.*;//引入java.sql包publicclassc1{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";//声明JDBC驱动程序对象StringconURL="jdbc:odbc:TestDB";//定义JDBC的URL对象try{Class.forName(JDriver);//加载JDBC-ODBC桥驱动程序}10.3JDBC编程实例10.3.1创建数据表48catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//连接数据库URLStatements=con.createStatement();//建立Statement类对象Stringquery="createtablestudent("+"idchar(10),"+"namechar(15),"+"scoreinteger"+")";//创建一个含有三个字段的学生表students.executeUpdate(query);//执行SQL命令catch(java.lang.ClassNotFou49s.close();//释放Statement所连接的数据库及JDBC资源con.close();//关闭与数据库的连线}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}s.close();//释放Stateme50其中,createtablestudent(idchar(10),namechar(15),scoreinteger);这个SQL语句表示建立一个名为student的表,包含id(字符型,宽度为10)、name(字符型,宽度为15)与score(数字型)三个字段。这段程序的操作结果是创建了一个数据库中student表的结构,表中还没有任何记录。其中,5110.3.2向数据表中插入数据【示例程序2】在上例创建的数据表student中插入三个学生的记录。importjava.sql.*;publicclassc2{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";try{Class.forName(JDriver);}10.3.2向数据表中插入数据52catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);Statements=con.createStatement();Stringr1="insertintostudentvalues("+"'0001','王明',80)";Stringr2="insertintostudentvalues("+"'0002','高强',94)";Stringr3="insertintostudentvalues("+"'0003','李莉',82)";//使用SQL命令insert插入三条学生记录到表中s.executeUpdate(r1);catch(java.lang.ClassNotFou53s.executeUpdate(r2);s.executeUpdate(r3);s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}s.executeUpdate(r2);54图程序2的运行结果图程序2的运行结果5510.3.3更新数据【示例程序3.java】修改上例数据表中的第二条和第三条记录的学生成绩字段值,并把修改后的数据表的内容输出到屏幕上。importjava.sql.*;publicclassc3{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";String[]id={"0002","0003"};int[]score={89,60};10.3.3更新数据56try{Class.forName(JDriver);}catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//修改数据库中数据表的内容PreparedStatementps=con.prepareStatement("UPDATEstudentsetscore=?whereid=?");inti=0,idlen=id.length;try{57do{ps.setInt(1,score[i]);ps.setString(2,id[i]);ps.executeUpdate();//执行SQL修改命令++i;}while(i<id.length);ps.close();//查询数据库并把数据表的内容输出到屏幕上Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));do{ps.setInt(1,score[i]);58}s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}}59在这个程序中使用了PreparedStatement类,它提供了一系列的set方法来设定位置。请注意程序中PreparedStatement()方法中的参数“?”。程序中的语句:PreparedStatementps=con.prepareStatement("UPDATEstudentsetscore=?whereid=?");ps.setInt(1,score[i]);//将score[i]的值作为SQL语句中第一个问号所代表参数的值ps.executeUpdate();在这个程序中使用了PreparedState60其中"UPDATEstudentsetscore=?whereid=?"这个SQL语句中各字段的值并没指定,而是以“?”表示。程序必须在执行ps.executeUpdate()语句之前指定各个问号位置的字段值。例如,用ps.setInt(1,score[i])语句中的参数1指出这里的score[i]的值是SQL语句中第一个问号位置的值。当前面两条语句执行完后,才可执行ps.executeUpdate()语句,完成对一条记录的修改。其中"UPDATEstudentset61程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是:ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));}程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是:62其中,executeQuery()返回一个ResultSet类的对象rs,代表执行SQL查询语句后所得到的结果集,之后再在while循环中使用对象rs的next()方法将返回的结果一条一条地取出,直到next()为false。运行结果如下:0001王明800002高强890003李莉60其中,executeQuery()返回一个ResultSe6310.3.4删除记录【示例程序4.java】删除表中第二条记录,然后把数据表的内容输出。importjava.sql.*;publicclassc4{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";try{Class.forName(JDriver);}10.3.4删除记录64catch(java.lang.ClassNotFoundExceptione){System.out.println
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目实施过程中的信息分享与反馈机制试题及答案
- 微生物防治措施与技巧试题及答案
- 2024年项目管理全面复习指南试题及答案
- 注册会计师考试成功故事的启示试题及答案
- 高校辅导员在促进学生成功中的作用试题及答案
- 项目管理认证考试挑战与应对试题及答案
- 2024年项目管理考试中的高效学习模式试题及答案
- 2024年项目管理变化趋势题目及答案
- 证券从业资格证考试的全局理解试题及答案
- 2024年行政管理师考试内容解析的试题及答案
- 第7课《珍视亲情+学会感恩》第2框《理解父母+学会感恩》【中职专用】《心理健康与职业生涯》(高教版2023基础模块)
- 无人机驾驶员培训计划及大纲
- 自费药品知情同意书
- 江苏省书法水平等级证书考试-硬笔书法考试专用纸-(123级)
- 山东省各地市地图课件
- 全套IATF16949内审核检查表(含审核记录)
- 基础工程量计算表
- 设备报修单表
- 心肺复苏急救步骤图例
- 《春夜喜雨》公开课一等奖课件
- 简易呼吸球囊
评论
0/150
提交评论