您好,欢迎访问三七文档
安徽冶金科技职业学院计算机系13网络技术班1JAVA程序设计——实训报告系部:计算机系班级:13网络技术教师:胡恩勇姓名:邓天顺安徽冶金科技职业学院计算机系13网络技术班2一、设计题目数据库数据操作二、目的和要求:1.掌握JDBC原理。和用JAVAJDBC技术连结数据2.使用JDBC数据库存取技术。3.用java编写数据库的增加,删除,查询,修改4.实现主要功能,界面不作要求。三、设计过程JDBC是基于java的,用于访问关系数据库的应用程序编程接口(API),提供在java应用程序中执行sql语句以访问和操作关系数据库的方法。JDBC提供4种类型的驱动程序:1,JDBC-ODBC桥驱动程序特点:具有大量的ODBC驱动程序可用,缺点是不易于移植,且运行速度较慢。2,本地库java实现驱动程序特点:能够充分利用已有的专用驱动程序,缺点是不具有跨平台特性。3,网络协议驱动程序特点:适用于网络的分布式应用,方式灵活缺点是设计网络安全问题。4,数据库协议驱动程序特点:应用程序直接于数据库服务器端通信,此类驱动程序全部使用java编写。1.受环境的制约,我们选用JDBC连接数据库的方式,首先打开Eclipse设置好工作目录,并新建项目,在该项目的默认包中创建如图所示的几个类。2.其中DBUtil.java是用来连接数据库的专用类;字母S打头的四个类分别实现对数据库的增删改查四个功能,Test.java类用于启动程序创建图形用户界面并调用别的类的方法。安徽冶金科技职业学院计算机系13网络技术班3DBUtil.javaimportjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;publicclassDBUtil{publicstaticConnectiongetConn(){Connectionconn=null;try{StringdriverName=sun.jdbc.odbc.JdbcOdbcDriver;//指定驱动程序Class.forName(driverName);StringdbUrl=jdbc:odbc:school;//指定URL数据源名称conn=DriverManager.getConnection(dbUrl);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returnconn;}publicstaticvoidclose(PreparedStatementpstmt){if(pstmt!=null){try{pstmt.close();}catch(SQLExceptione){e.printStackTrace();}}}安徽冶金科技职业学院计算机系13网络技术班4publicstaticvoidclose(Connectionconn){if(conn!=null){try{conn.close();}catch(SQLExceptione){e.printStackTrace();}}}publicstaticvoidmain(String[]args){Connectionconn=DBUtil.getConn();System.out.println(ok);DBUtil.close(conn);}}该文件下载与网络,但我们要知道创建它包含3个步骤:1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(StringclassName)实现。try{//加载的驱动类Class.forName(sun.jdbc.odbc.JdbcOdbcDriver;);}catch(ClassNotFoundExceptione){System.out.println(找不到驱动程序类,加载驱动失败!);e.printStackTrace();}2、提供JDBC连接的URLStringconstr=jdbc:odbc:系统数据源;//指定URLcon=DriverManager.getConnection(constr);系统数据源:ODBC数据源的名称student3、创建数据库的连接要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。使用DriverManager的getConnectin(Stringurl,Stringusername,Stringpassword)方法传入指定的欲连接的数据库的路径、数据库的用户名和安徽冶金科技职业学院计算机系13网络技术班5密码来获得。try{StringdriverName=sun.jdbc.odbc.JdbcOdbcDriver;//指定驱动程序Class.forName(driverName);Stringconstr=jdbc:odbc:student;//指定URLcon=DriverManager.getConnection(constr);}catch(SQLExceptionse){System.out.println(数据库连接失败!);se.printStackTrace();}Sselect.javaimportjava.awt.Component;importjava.sql.*;importjava.util.ArrayList;publicclassSselect{publicstaticObject[][]res()throwsSQLException{//返回给用户界面类型装箱Statementstm=null;Connectioncon=null;Object[][]result=newObject[20][7];try{con=DBUtil.getConn();//建立连接}catch(Exceptione){e.printStackTrace();}try{stm=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//uix创建statement对象ResultSetrst=stm.executeQuery(select*fromstudent);//执行SQL语句intxline=0;while(rst.next()){result[xline][0]=rst.getInt(1);result[xline][1]=rst.getString(2);result[xline][2]=rst.getString(3);result[xline][3]=rst.getString(4);result[xline][4]=rst.getDate(5);result[xline][5]=rst.getString(6);result[xline][6]=rst.getInt(7);xline++;}安徽冶金科技职业学院计算机系13网络技术班6}catch(Exceptione){System.out.println(查询出错!);}finally{con.close();returnresult;}}}除了连接数据的三个步骤外,要对数据库进行操作还需要以下四步:4、创建一个Statement要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:1、执行静态SQL语句。通常通过Statement实例实现。2、执行动态SQL语句。通常通过PreparedStatement实例实现。3、执行数据库存储过程。通常通过CallableStatement实例实现。具体的实现方式:Statementstmt=con.createStatement();PreparedStatementpstmt=con.prepareStatement(sql);CallableStatementcstmt=con.prepareCall({CALLdemoSp(?,?)});5、执行SQL语句Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute1、ResultSetexecuteQuery(StringsqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。2、intexecuteUpdate(StringsqlString):用于执行INSERT、UPDATE或DELETE语句以及SQLDDL语句,如:CREATETABLE和DROPTABLE等3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。具体实现的代码:ResultSetrs=stmt.executeQuery(SELECT*FROM...);introws=stmt.executeUpdate(INSERTINTO...);booleanflag=stmt.execute(Stringsql);6、处理结果两种情况:1、执行更新返回的是本次操作影响到的记录数。2、执行查询返回的结果是一个ResultSet对象。ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。使用结果集(ResultSet)对象的访问方法获取数据:while(rs.next()){Stringname=rs.getString(name);Stringpass=rs.getString(1);//此方法比较高效安徽冶金科技职业学院计算机系13网络技术班7}(列是从左到右编号的,并且从列1开始)7、关闭JDBC对象操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:1、关闭记录集2、关闭声明3、关闭连接对象if(rs!=null){//关闭记录集try{rs.close();}catch(SQLExceptione){e.printStackTrace();}}if(stmt!=null){//关闭声明try{stmt.close();}catch(SQLExceptione){e.printStackTrace();}}if(conn!=null){//关闭连接对象try{conn.close();}catch(SQLExceptione){e.printStackTrace();}}Supdate.javaSinsert.javaSdelete.java以上三个类与Sselect.java类差异非常小,我们只需要复制该类并进行修改,Stringsql=select*fromstudent;ResultSetrst=stm.executeQuery(sql);这是原Sselect.java类的一条语句为了其它三个类我们分别初始sql变量为:update表名set列1=值1,列2=值2,列3=值3whereID=值insertinto表名(列1,列2,列3)values(值1,值2,值3);deletefromstudentwhereID=值安徽冶金科技职业学院计算机系13网络技术班8Test.javaimportjava.awt.*;importjavax.swing.*;importjavax.swing.table.DefaultTableModel;importcom.sun.org.apache.bcel.internal.generic.NEW;importjava.awt.event.*;importjava.sql.
本文标题:Java设计报告
链接地址:https://www.777doc.com/doc-2881481 .html