第3章 JAVA 数据库编程(JAVA前台与数据库的连接)_第1页
第3章 JAVA 数据库编程(JAVA前台与数据库的连接)_第2页
第3章 JAVA 数据库编程(JAVA前台与数据库的连接)_第3页
第3章 JAVA 数据库编程(JAVA前台与数据库的连接)_第4页
第3章 JAVA 数据库编程(JAVA前台与数据库的连接)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第3章JAVA数据库编程应用JDBC链接SQLServer2005数据库大纲JDBC介绍实验前的准备——相关软件的安装JDBC数据库访问流程实验要求3.1JDBCJava和JDBC有着跨平台运行的优势。用Java和JDBC(JavaDatabaseConnectivity)编写的数据库程序既可以在Windows系列操作系统上计算机上运行,也可以在Unix服务器上运行,还可以在Java平台支持的数据库设备上运行。JDBC是用于执行SQL语句的JAVA应用程序接口,是一套API集合,在这个集合中设置了许多允许JAVA程序连接数据库的框架。3.1JDBCJava应用程序JDBC驱动程序、管理器厂家提供的JDBC驱动程序JDBC-ODBC桥JDBC驱动程序APIODBC驱动程序数据库JDBCAPI负责与JDBC管理器驱动程序API进行通信,将各个不同的SQL语句发送给它。驱动程序管理器API(对程序员是透明的)与实际连接到数据的各个第三方驱动程序进行通信,并且返回查询的的信息,或者执行由查询规定的操作。3.1JDBCJDBC的主要功能如下:与一个数据库建立连接(connection)。向数据库发送SQL语句(statement)。处理数据库返回的结果(resultset)。1、Java应用程序Java程序主要包括Java应用程序、java小程序和Servlet,这些类型的程序都可以利用JDBC方法实现对数据库的访问和操作。主要完成的任务包括:请求与数据库建立连接、向数据库发送SQL请求、为结果集定义存储应用和数据类型、查询结果、处理错误、控制传输、提交、关闭连接等操作。2、JDBC管理器JDBC管理器提供了一个“驱动器管理器”,它能够动态管理和维护数据库查询所需要的所有驱动程序对象,实现Java程序与特定驱动程序的连接,从而体现JDBC与平台无关的特性。其主要任务包括:为特定数据库选择驱动程序、处理JDBC的初始化调用、为每个驱动程序提供JDBC功能的入口、为JDBC调用执行参数等。3、驱动程序驱动程序处理JDBC方法,向特定数据库发送SQL请求,并为JAVA程序获取结果。JDBC是独立于数据库管理系统的,每一个数据库都有自己的协议与客户机通信,JDBC利用数据库驱动程序来使用这些数据库引擎。JDBC驱动程序由数据库和第三方软件商提供,程序中所使用的数据库系统不同,所需要的驱动程序也有所不同。其任务包括:建立与数据库的连接、向数据库发送请求、翻译用户程序请求、将错误代码格式化成标准的JDBC错误代码JDBC驱动程序类型类型一JDBC-ODBC桥接的JDBC驱动程序通过JDBC-ODBCBridge的转换,将Java程序中使用的JDBCAPI转换成ODBCAPI,然后通过ODBC来从数据库中提取数据。类型二把JDBCAPI直接映射为数据库供应商提供(并非所有数据库供应商都会提供,例如ACCESS就不提供)的专用客户端API的JDBC驱动程序。通过JDBC-NativeAPIBridge的转换,将Java程序中使用的JDBCAPI转换成NativeAPI,然后从数据库中提取数据。类型三支持三层JDBC访问的JDBC驱动程序类型四完全使用JAVA编写的JDBC驱动程序,它直接与数据库实例对话。JDBCAPI类类型 JDBC类驱动程序管理Java.sql.Driverjava.sql.DriverManagerjava.sql.DrivePropertyInfo数据库连接Java.sql.ConnectionSQL语句java.sql.Statementjava.sql.PreparedStatementjava.sql.CallableStatement数据java.sql.ResultSet错误java.sql.SQLExceptionjava.sql.SQLWarningJDBC类层次

驱动程序管理器连接连接连接语句语句可调用语句准备语句executeUpdate()executeQuery()execute()getMoreResults()结果组元数据数据getResultsSet()数据库访问接口目前许多数据库均支持SQL,对于由SQL数据库组成的异构数据库系统,JDBC和ODBC为访问其异构成员提供了统一的方式。图2.7“DatabaseOptions”对话框安装SQLServer2005的JDBC程序安装SQLServer2005的JDBC程序4、安装后得到3个jar文件:(C:\ProgramFiles\MicrosoftSQLServer2005DriverforJDBC\lib)msutil.jar、msbase.jar、mssqlserver.jar,将他们复制到java的lib目录下,如D:\jdk1.4\lib5、设置系统classpath环境变量,把4中三个文件的路径添加进来。图2.9Ex_ODBC运行结果JDBC数据库访问流程 1.建立数据源(odbc)2.装入JDBC驱动程序3.建立连接4.执行SQL语句5.检索结果6.关闭连接图2.8为控件添加数据成员JDBC数据库访问流程在Java.sql中有4个主要的类可以实现数据存储。DriverManager负责加载和处理给定的JDBC驱动程序Connection表示同一个特定数据库进行连接的对象Statement是SQL语句的载体ResultSet是结果集对象1.建立数据源这里所建立的数据源是指建立ODBC数据源,这一点并不是JDBC的要求,而是ODBC所必须的。当使用JDBC-ODBC桥接来建立连接时,必须先建立ODBC数据源。2.装入JDBC驱动程序要使用JDBC来访问数据库,需要加载JDBC驱动程序,代码语句: Class.forName()对于JDBC的驱动访问来说,是Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);对于JDBC-ODBC桥接来说,则是 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);3.建立连接要连接一个数据库,必须创建Connection类的一个实例,即调用方法DriverManger.getConnection。与数据库建立连接标准方法是调用方法: DriverManager.getConnection(Stringurl,Stringuser,Stringpassword); DriverManager.getConnection(Stringurl); 返回值是Connection类的实例。url标准语法是 jdbc:<subprotocol>:<subname>subprotocol说明了使用哪种JDBC驱动程序,例如:使用JDBC-ODBC,就写“odbc”,Subname就是数据源名。图2.14“MFCClassWizard”对话框3.建立连接对于JDBC-ODBC桥接来讲,subname就是数据源名,为了存取数据,还要提供用户和口令。Stringurl=“jdbc:odbc:source”;Connectioncon=DriveManager.getConnection(url,“user”,“password”)Source是事先建立的数据源4.执行SQL语句建立连接后,就能够向数据库发送SQL语句了。JDBC提供了Statement类来发送SQL语句,Statement类的对象用createStatement方法创建;SQL语句发送以后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表中包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的getXXX方法,可以检索当前行的各个列,并显示出来。5.检索结果对Result对象进行处理之后,才能将查询结果显示给用户。Result对象包括一个由查询语句返回的一个表ResultSet,这个表中包含所有的查询结果。对Result对象的处理必须逐行进行,ResultSet.next方法使指针下移一行。

6.关闭连接连接在对象使用完毕后,应当使用close()方法解除与数据库的连接,并关闭数据库。例如:con.close();JDBC编程实例//创建顾客consumer表,此表有三个字段:顾客编号id,姓名name,购物总金额totalmoneyimportjava.sql.*;publicclassCreate_Table{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";//声明jdbc驱动程序类型StringconURL="jdbc:odbc:student";//定义jdbc的url对象try{Class.forName(JDriver);}//加载jdbc-odbc桥驱动程序catch(java.lang.ClassNotFoundExceptione){System.out.println("forname:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//连接数据库URLStatements=con.createStatement();//建立Statement类对象 //创建一个含有三个字段的顾客表conumser Stringquery="createtableconsumer(idchar(10),namechar(15),totalmoneyinteger)";s.executeUpdate(query);//执行SQL语句s.close();//释放statement所连接的数据库及jdbc资源 con.close();//关闭与数据库的连接}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}示例程序Insert_Record//在上例创建的数据表consumer中插入三个顾客的纪录

importjava.sql.*;publicclassInsert_Record{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:student";try{Class.forName(JDriver);}catch(java.lang.ClassNotFoundExceptione){System.out.println("forname:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//使用SQL命令insert插入三条顾客纪录到表中Statements=con.createStatement();Stringr1="insertintoconsumervalues('00001','王明',360)";Stringr2="insertintoconsumervalues('00002','高强',728)";Stringr3="insertintoconsumervalues('00003','李丽',1182)";s.executeUpdate(r1);s.executeUpdate(r2);s.executeUpdate(r3);s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}示例程序Update_Record//修改上例中的第二条和第三条纪录的顾客总消费金额字段的值,并把数据表的内容输出到屏幕上importjava.sql.*;publicclassUpdate_Record{publicstaticvoidmain(String[]args){StringJdriver="sun.jdbc.odbc.JdbcOdbcDriver";StringconURL="jdbc:odbc:TestDB";String[]id={"00002","00003"};int[]totalmoney={989,1260};try{Class.forName(Jdriver);}catch(java.lang.ClassNotFoundExceptione){System.out.println("forname:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);

示例程序Update_Record//修改数据库中数据表的内容PreparedStatementps=con.prepareStatement("UPDATEconsumersettotalmoney=?whereid=?");inti=0,idlen=id.length;do{ps.setInt(1,totalmoney[i]); ps.setString(2,id[i]);ps.executeUpdate();++i;}while(i<id.length);ps.close();//查询数据库并把数据表的内容输出到屏幕上Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromconsumer");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("totalmoney"));} s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}示例程序Delete_Record//在上例创建的数据表consumer中删除第二条记录,然后把数据表的内容输出importjava.sql.*;publicclassDelete_Record{publicstaticvoidmain(String[]args){StringJdriver="sun.jdbc.odbc.

温馨提示

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

评论

0/150

提交评论