java面向对象第九章-数据库应用_第1页
java面向对象第九章-数据库应用_第2页
java面向对象第九章-数据库应用_第3页
java面向对象第九章-数据库应用_第4页
java面向对象第九章-数据库应用_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第九章数据库

应用2JDBC技术概述JDBC〔JavaDataBaseConnectivity〕称为Java数据库连接。JDBC是一种可用于执行SQL语句的JavaAPI〔ApplicationProgrammingInterface,应用程序接口〕。它由一些Java语言写的类、界面组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。3JDBC技术概述JDBC的数据库访问要通过JDBC驱动程序来完成,JDBC驱动程序在Java应用程序与物理数据库之间架起了一座桥梁。JDBC驱动分为以下几种类型:JDBC-ODBC桥接驱动程序JDBC-原始数据库API驱动程序JDBC-中间层驱动程序纯JDBC驱动程序4安装JDBC驱动程序5使用JDBC连接数据的5个步骤6使用JDBC连接数据的5个步骤1、加载JDBC驱动程序使用Class.forName方法加载指定数据库的驱动程序。Java反射机制:动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。常见的数据库加载方式MySql:Class.forName(“”);SqlServer:Class.forName(“”);Oracle:Class.forName(“oracle.jdbc,driver.OracleDriver”);7使用JDBC连接数据的5个步骤22、定义连接URL和建立连接定义连接:成功加载JDBC驱动程序之后,必须指定效劳器的位置、指向数据库的URL和使用协议,并参加效劳器主机名、端口号和数据库名。每个数据驱动程序的文档中,都会提供精确的定义。StringconURL="jdbc:mysql://localhost:3306/test?user=root&password=123456";建立连接Connectioncon=DriverManager.getConnection(conURL);8使用JDBC连接数据的5个步骤2SQLServer2005:StringconURL="jdbc:sqlserver://localhost:1433;"+"databaseName=testDB;User=sa;Password=123456";con=DriverManager.getConnection(conURL);或者StringconURL="jdbc:sqlserver://localhost:1433;"+"databaseName=testDB;";con=DriverManager.getConnection(conURL,"sa","123456");9使用JDBC连接数据的5个步骤33、创立Statement/PreparedStatement对象,它是用来向数据库发送查询和命令。Statement对象由Connection的createStatement()方法创立。Statementstm=con.createStatement();//con为Connection对象PreparedStatement对象由Connection的prepareStatement(Stringsql)方法创立Stringquery="insertintoStudentvalues(?,?,?)";PreparedStatementstm=con.prepareStatement(query);//con为Connection对象10Statement接口Statement接口常用方法

ResultSetexcuteQuery(Stringsql)//执行给定的SQL语句,该语句返回单个ResultSet对象。通常用于查询。ResultSet接口:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。常用方法:booleannext()//将标记移到下一行getXXX(StringcolumnLabel)//以XXX对象的形式获得当前行中的指定列。如:getString(“id”)//以字符串形式返回当前行中列标为“id”的项

在程序设计中,使用SQL语句来操作数据库,最常用的操作是:查询、更新、插入、删除,对应的语句举例如下:select查询语句如:select*fromstudents,select*fromstudentswheresmallclass=‘EN01’insert插入语句如:insertintostudentsvalues(‘0712345678’,’张三’,’SV07’,’EN’,’EN02’)update更新语句如:updatestudentssetmajorgrade=‘sA07’wherename=‘张三’delete删除语句如:deletefromstudentswherename=‘张三’12如:

Statementstm=con.createStatement();Stringquery="select*fromStudent";ResultSetrs=stm.executeQuery(query);inti=0;while(rs.next()){i++;System.out.print("第"+i+"条记录:");System.out.print("sid="+rs.getString("sid")+";");System.out.print("sname="+rs.getString("sname")+";");System.out.print("sdepartment="+rs.getString("sdepartment")+"。\n");}13Statement接口intexcuteUpdate(Stringsql)执行给定SQL语句,该语句可能为INSERT、UPDATE或DELETE语句,或者不返回任何内容的SQL语句。返回:(1)对于SQL数据操作语言(DML)语句,返回行计数(2)对于什么都不返回的SQL语句,返回0例如:Statementstm=con.createStatement();Stringquery="insertintoStudentvalues('1004','小李','计算机')";System.out.println(stm.executeUpdate(query));//数据库增加新行,控制台输出为1,说明收影响的行数为1行14PreparedStatement接口PreparedStatement接口:表示预编译的SQL语句的对象。SQL语句被预编译并存储在PreparedStatement对象中。然后可以使用此对象屡次高效地执行该语句。常用方法:ResultSetexecuteQuery()//执行查询intexecuteUpdate()//执行更新操作可以利用setXXX方法来进行动态参数匹配。15PreparedStatement接口常用方法setXXX(int

parameterIndex,XXXvalue);//设置第parameterIndex个参数的值为value,XXX代表类型,如String、Int、Short….例如:Stringquery="insertintoStudentvalues(?,?,?)";PreparedStatementstm=con.prepareStatement(query);stm.setString(1,"1004");stm.setString(2,"黎明");stm.setString(3,"会计");stm.excuteUpdate();16使用JDBC连接数据的5个步骤4,54、处理获得的数据。处理结果最简单方式是使用ResultSet的next方法在表中移动,每次移动一行。5、关闭连接con.close();关闭连接同时,还自动关闭对应的Statement和ResultSet对象。17使用statement对象进行数据库操作SQLServer数据库实例//自定义的获取数据库连接对象方法publicstaticConnectiongetConnection(){Connectioncon=null;try{//定义数据库驱动程序StringJDBCDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//通过反射加载驱动类Class.forName(JDBCDriver);//定义连接串,包含主机,端口,数据库名,用户名,密码StringconURL="jdbc:sqlserver://localhost:1433;"+"databaseName=testDB;User=sa;Password=123456";//获取与数据库连接对象con=DriverManager.getConnection(conURL);}catch(SQLExceptionex){}catch(ClassNotFoundExceptionex){}finally{returncon;//返回获得的连接}}18查询操作:try{Connectioncon=getConnection();//获取连接Statementstm=con.createStatement();//获得Statement对象Stringquery=“select*fromStudent”;//定义要执行的操作ResultSetrs=stm.executeQuery(query);//通过Statement对象执行查询操作,获得结果集ResultSetinti=0;

//处理查询结果,此处为控制台输出while(rs.next()){i++;System.out.print("第"+i+"条记录:");System.out.print("sid="+rs.getString("sid")+";");System.out.print("sname="+rs.getString("sname")+";");System.out.print("sdepartment="+rs.getString("sdepartment")+"。\n");}con.close();//关闭连接}catch(SQLExceptionex){//省略异常处理代码}19插入操作:Connectioncon=getConnection();//获取连接try{Statementstm=con.createStatement();//定义要执行的操作StringsqlStr="insertintoStudentvalues('1004','李四','计算机')";

//执行插入操作,同时在控制台输出受影响的行数System.out.println("受影响行数为"+stm.executeUpdate(sqlStr));con.close();//关闭连接}catch(SQLExceptionex){

//异常处理代码略…..}20使用preparedStatement对象进行数据库操作publicstaticvoidinsertTest(){Connectioncon=getConnection();try{

//定义要执行的操作Stringquery="insertintoStudentvalues(?,?,?)";

//获得PreparedStatement对象PreparedStatementstm=con.prepareStatement(query);stm.setString(1,“1004”);//第一个?对应的参数stm.setString(2,“黎明”);//第二个?对应的参数stm.setString(3,“会计”);//第三个?对应的参数stm.executeUpdate();con.close();}catch(SQLExceptionex){}}21插入操作:Connectioncon=getConnection();//获取连接try{Statementstm=con.createStatement();//定义要执行的操作

StringsqlStr="insertintoStudentvalues('1004','李四','计算机')";

//StringsqlStr=“deletefromStudentwheresid=‘1004’”;//删//StringsqlStr=“updateStudentsetsname=‘newName’wheresname=‘李四’”;//改

//执行操作,同时在控制台输出受影响的行数System.out.println("受影响行数为"+stm.executeUpdate(sqlStr));con.close();//关闭连接}catch(SQLExceptionex){

//异常处理代码略…..}数据库的可视化编程如何将数据库表中数据导入到表控件中数据库的可视化编程JTable是Swing中代表表格的控件。JTable内容是一个表模型〔TableModel〕,因此导入数据的过程可以使用表模型类〔DefaultTableModel〕,具体步骤如下:〔1〕创立表模型对象DefaultTableModelmodel=newDefaultTableModel();//給每个列一个列名model.addColumn(“第一列的列名”);….model.addColumn(“第n列的列名”);数据库的可视化编程〔2〕将数据添加到表模型中//逐行添加for(inti=0;i<行数;i++){//把每行数据添加到一个实现自动增长的对象数组Vector中Vectorv=newVector();v.addElement(第1列的值);......v.addElement(第n列的值);model.addRow(v);//添加一行记录到表模型中}数据库的可视化编程〔3〕将表模型设置到表中JTabletable=newJTable();table.setModel(model);//将表模型的内容设置到表格中。

JTable常用方法:getSelectRow方法〔获得选中的行的索引〕getValueAt(row,col)方法〔获得某个单元格的值〕setValueAt(row,col)方法〔设置某个单元格的值〕setRowSelectionInterval(startrow,endrow)〔选中某些行4、数据库的可视化编程例如:连接数据库d1,通过“查询”按钮将其中的数据库表car的数据显示在jTable1表格控件中,那么“查询”按钮的actionperform事件代码参考如下:数据库的可视化编程Statementst=null;Connectioncon=null;try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}catch(ClassNotFoundExceptionex){Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);}try{con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=d1;user=sa;password=123");System.out.println("数据库连接成功");}catch(SQLExceptione){ System.out.println("数据库连接失败"); e.printStackTrace(); }数据库的可视化编程//建立表模型对象,并设置该对象的列标题DefaultTableModelmodel=newDefaultTableModel();model.addColumn("品牌");model.addColumn("零售价");model.addColumn("颜色");//通过Statement对象发送查询指令try{ st=con.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); }数据库的可视化编程//将查询结果保存在结果集对象rs中,并将rs中数据映射到表模型对象的每一行

ResultSetrs; try{rs=st.executeQuery("select*fromcar");while(rs.next()) { Vectorv=newVector();v.addElement(rs.getString(1));v.addElement(rs.getString(2));v.addElement(rs.getString(3)); model.addRow(v); }jTable1.setModel(model);}catch(SQLExceptionex){Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);}数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论