




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验八 数据库的连接与访问 实验指导应用程序JDBC数据库/数据源JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。简单地说,JDBC可做三件事:与数据库建立连接、发送操作数据库的语句并返回处理结果。图1 JDBC的功能示意图一、连接数据库(1)装载驱动程序装载不同的驱动程序,可以连接不同的数据库管理系统。驱动程序文档将提供应该使用的类名,例如,连接SQLServer的驱动程序的字符串为:String JDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver;调用 Class.forName 将自动加载驱动程序:Class.forName(JDriver);/程序加载驱动注意:连接sqlserver2008时,在Eclipse中要引入的包的是sqljdbc2.0驱动Microsoft SQL Server JDBC Driver 2.0.exe,解压后运行里面的程序就可以得到sqljdbc4.jar和sqljdbc.jar。找到要引的包,如何把它引进去呢?方法是:右击你创建的工程,找到Build path ,选择 Add External Archives,在libraries中点击Add External JAR Selection按钮,找到你要导入的包sqljdbc4.jar,点击打开就可以引入了,引入后在工程下面的Referenced Libraries下便能显示这个包了。若不引入这个包,运行程序时提示“加载数据库引擎失败”。图2 Eclipse引入sqljdbc4.jar包(2)建立连接首先要定义连接字符串,在该字符串中指定要连接的数据库名称。接下来可以调用DriverManager.getConnection()建立具体的连接。 getConnection 方法返回一个打开的连接,可以使用此连接创建 JDBC statements 并发送 SQL 语句到数据库。String connectDB=jdbc:sqlserver:/localhost:1433;DatabaseName=student;/数据源注意IP地址和端口号,数据库名字!String user=sa;/你自己创建的用户名字和密码String password=sqlserver2008;Connection con= DriverManager.getConnection(connectDB,user,password); /连接数据库对象二、创建对象Statement 对象用于把SQL语句发送到DBMS。只须简单地创建一个Statement对象并且然后执行它,使用适当的方法执行你发送的SQL语句。需要一个活跃的连接的来创建 Statement 对象的实例。在下面的例子中,使用Connection 对象con创建Statement对象stmt:Statement stmt=con.createStatement();三、执行SQL语句到此 stmt 已经存在了,但它还没有把 SQL 语句传递到 DBMS。我们需要提供 SQL 语句作为参数提供给我们使用的 Statement 的方法。例如:stmt.executeQuery(SELECT * FROM StuDate where age=18);Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。方法executeQuery用于产生单个结果集的语句,例如SELECT语句。方法executeUpdate用于执行INSERT、UPDATE或DELETE语句以及SQL DDL(数据定义语言)语句,例如CREATE TABLE和DROP TABLE。INSERT、UPDATE或DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE或DROP TABLE等不操作行的语句,executeUpdate的返回值总为零。执行语句的所有方法都将关闭所调用的Statement对象的当前打开结果集(如果存在)。这意味着在重新执行Statement对象之前,需要完成对当前ResultSet对象的处理。Statement对象本身不包含SQL语句,因而必须给Statement.execute方法提供SQL语句作为参数。结果集(ResultSet)是数据中查询结果返回的一种对象,一般是一个表,其中有查询所返回的列标题及相应的值。可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,它同时还具有操纵数据的功能,可完成对数据的更新等ResultSet 包含符合 SQL 语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next 方法用于移动ResultSet中的下一行,使下一行成为当前行。ResultSet维护指向其当前数据行的光标。每调用一次next方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next将把光标置于第一行上,使它成为当前行。随着每次调用next导致光标向下移动一行,按照从上至下的次序获取ResultSet 行。在 ResultSet对象或其父辈Statement对象关闭之前,光标一直保持有效。四、关闭对象和连接Statement对象将由Java垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要Statement对象时显式地关闭它们。这将立即释放DBMS资源,有助于避免潜在的内存问题。同样,连接对象也需进行关闭。例如: stmt.close();/关闭命令对象连接 con.close();/关闭数据库连接以下程序段完成对数据库进行的增加、修改、删除、查询操作。例1:插入一条学生记录/增加数据 System.out.println(增加); stmt.executeUpdate(insert into StuDate values(5,王芳,女,19,光电);/增加一条记录 System.out.println(增加后的数据是:); ResultSet rs1=stmt.executeQuery(SELECT * FROM StuDate );/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs1.next() /输出每个字段System.out.println(rs1.getString(id)+t+rs1.getString(name); System.out.println(读取完毕);例2:修改一条学生记录 /修改数据 System.out.println(修改); stmt.executeUpdate(Update StuDate set age=13 where id=3 );/修改记录 System.out.println(修改后的数据是:); ResultSet rs2=stmt.executeQuery(SELECT * FROM StuDate where id=3 );/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs2.next() /输出每个字段System.out.println(rs2.getString(id)+t+rs2.getString(age); System.out.println(读取完毕);例3:删除一条学生记录/删除数据 System.out.println(删除); stmt.executeUpdate(Delete From StuDate where id=4 );/修改记录 System.out.println(删除后的数据是:); ResultSet rs3=stmt.executeQuery (SELECT * FROM StuDate );/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs3.next() /输出每个字段System.out.println(rs3.getString(id)+t+rs3.getString(age); 例4:查询学生信息ResultSet rs=stmt.executeQuery(SELECT * FROM StuDate where age=18);/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs.next() /输出每个字段System.out.println(rs.getString(id)+t+rs.getString(name); 程序运行后控制台截图如下图所示。图3程序运行结果该程序的全部源代码:import java.sql.*;public class JdbcTestpublic static void main(String args) String JDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver;/SQL数据库引擎 String connectDB=jdbc:sqlserver:/localhost:1433;DatabaseName=student;/数据源注意IP地址和端口号,数据库名字 try Class.forName(JDriver);/加载数据库引擎,返回给定字符串名的类 catch(ClassNotFoundException e) /e.printStackTrace(); System.out.println(加载数据库引擎失败); System.exit(0); System.out.println(数据库驱动成功); try String user=sa;/你自己创建的用户名字和密码 String password=sqlserver2008; Connection con=DriverManager.getConnection(connectDB,user,password);/连接数据库对象 /Connection con=DriverManager.getConnection(connectDB); System.out.println(连接数据库成功); Statement stmt=con.createStatement();/创建SQL命令对象 /创建表 System.out.println(查询); System.out.println(开始读取数据); ResultSet rs=stmt.executeQuery(SELECT * FROM StuDate where age=18);/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs.next() /输出每个字段 System.out.println(rs.getString(id)+t+rs.getString(name); System.out.println(读取完毕); /增加数据 System.out.println(增加); stmt.executeUpdate(insert into StuDate values(5,王芳,女,19,光电);/增加一条记录 System.out.println(增加后的数据是:); ResultSet rs1=stmt.executeQuery(SELECT * FROM StuDate );/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs1.next() /输出每个字段 System.out.println(rs1.getString(id)+t+rs1.getString(name); System.out.println(读取完毕); /修改数据 System.out.println(修改); stmt.executeUpdate(Update StuDate set age=13 where id=3 );/修改记录 System.out.println(修改后的数据是:); ResultSet rs2=stmt.executeQuery(SELECT * FROM StuDate where id=3 );/返回SQL语句查询结果集(集合) /循环输出每一条记录 while(rs2.next() /输出每个字段 System.out.println(rs2.getString(id)+t+rs2.getString(age); System.out.println(读取完毕); /删除数据 System.out.println(删除); stmt.executeUpdate(Delete From StuDate where id=4 );/修改记录 System.out.println(删除后的数据是:); ResultSet rs3=stmt.executeQuery(SELECT * FROM S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025技师仓储管理试题及答案
- 2025年注册验船师资格考试(A级船舶检验专业案例分析)强化训练试题及答案一
- 2025年注册验船师资格考试(B级船舶检验法律法规)冲刺试题及答案一
- 2025年高级云计算开发工程师认证指南及模拟试题解析
- 2025年全国养老护理员(高级)技能证书理论考试试题(附答案)
- 国际银行业务试题及答案
- 2025年政府驻穗办事处招聘考试综合备考指南与技巧
- 2025年初级智能制造工程师笔试模拟试题与答案
- 2025年电力电子工程师专业模拟题及答案指南
- 2025年网络安全专业笔试与面试全攻略
- 建设集团有限公司安全生产管理制度汇编
- 牙体牙髓病最全课件
- 交通信号控制系统检验批质量验收记录表
- 疫苗运输温度记录表
- 各国钢材-合金牌号对照表
- 医院定岗定编要点
- 护理质控简报
- JJG 700 -2016气相色谱仪检定规程-(高清现行)
- 【原创】《互联网+家园共育的创新与实践研究》课题实施方案
- 车工高级工操作技能试卷
- 一年级绘本阅读记录卡
评论
0/150
提交评论