版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Java面向对象程序设计》数据库编程应用主要内容JDBC连接数据库查询操作更新、添加与删除操作查询Excel电子表格使用预处理语句事务难点使用预处理语句事务导读本章将学习怎样使用Java提供的JDBC技术操作数据库。JDBC概述JDBC的概念数据库是收集、存储和组织数据常用的方法,大部分应用系统不可避免地需要访问数据库。
Java语言通过JDBC(Java
DataBaseConnection,Java数据库连接)API提供了一个标准SQL(StructuredQueryLanguage,结构化查询语言)数据库访问接口。JDBC的任务
(1)与一个数据库建立连接
(2)向数据库发送SQL语句
(3)处理数据库返回的结果
JDBC是一种低级的APIJDBC和ODBC及其他API的比较
(1)ODBC不适合在Java中直接使用,因为它是一个C语言实现的API,从Java程序调用本地的C程序会在安全性、完整性、健壮性方面都有许多缺点。
(2)不能完全精确地实现从ODBC,C,API到JavaAPI的翻译。
(3)ODBC很难学,它把简单和高级功能混杂在一起,甚至对非常简单的查询,其选项也非常复杂。而JDBC恰好相反,其尽量保证简单功能的简便性,而同时在必要时允许使用高级功能。
(4)启用纯Java需要象JDBC这样的JavaAPI
JDBC概述JDBC与数据库系统独立的API包含两部分,一部分是面向应用系统开发人员的JDBCAPI,另一部分是面向驱动程序开发人员的JDBCDriverAPI。Java程序通过JDBCAPI访问JDBC驱动程序管理器(DriverManager),驱动程序管理器再通过JDBCDriverAPI访问不同的JDBC驱动程序,从而实现对不同类型数据库的访问。JDBC提供了一个通用的JDBCDriverManager,用来管理各数据库软件商提供的JDBC驱动程序,访问其数据库。几乎所有数据库厂商都提供其数据库产品的JDBC驱动程序,包括微软公司的SQLServer2000。JDBCURLJDBCURL是JDBC用来标识数据库的方法,JDBC驱动程序管理器根据JDBCURL选择正确的驱动程序,由驱动程序识别该数据库并与之建立连接。构造JDBCURL时具有特定的规范。首先,它们应允许不同的驱动程序使用不同的方案来命名数据库。例如,odbc子协议允许URL含有属性值。其次,JDBCURL应允许程序员将连接数据库所需的全部信息编入其中。这样就可以让Java程序直接打开数据库连接,而不需要最终用户去做任何系统管理工作。第三,JDBCURL可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际的名称。网络命名服务(例如DNS、NIS)有多种,而对于使用哪种命名服务并无限制。
JDBCURL的标准语法由三部分组成,各部分间用冒号分隔jdbc:<子协议>:<子名称>三个部分可分解如下:
jdbc:协议名。JDBCURL中的协议总是jdbc。
<子协议>:驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。
<子名称>:一种标识数据库的方法。子名称可以依不同的子协议而变化,使用子名称的目的是为定位数据库提供足够的信息。例如,odbc用于指定ODBC数据源名称的URL的使用。JDBCURL通过ODBC驱动程序来访问某个数据库:
jdbc:odbc:fred
这里,子协议为odbc,子名称fred是本地ODBC数据源名。例如,通过Internet访问SQLServer数据库服务器,则在JDBCURL中应将网络地址作为子名称的一部分包括进去。如:jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=DemoDBJDBC-ODBC桥ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WindowsOpenServicesArchitecture,WOSA)中有关数据库的一个组成部分。它建立了一组规范,提供对数据库访问的标准API,利用SQL来完成其大部分任务。ODBC标准出现较早,几乎所有的数据库系统都提供ODBC驱动程序。Sun公司对没有提供相应JDBC驱动程序的数据库系统,但开发了特殊的驱动程序:JDBC-ODBC桥,该驱动程序支持JDBC通过现有的ODBC驱动程序访问相应的数据库系统。JDBC-ODBC桥子协议名为odbc,允许在子名称(数据源名称)后面指定任意多个属性值。odbc
子协议的完整语法为
jdbc:odbc:<数据资源名称>[;<属性名>=<属性值>]*jdbc:odbc:<数据资源名称>[;<属性名>=<属性值>]*表示可有多个属性。下面都是合法的jdbc:odbc
名称:jdbc:odbc:qeor7jdbc:odbc:wombatjdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWERjdbc:odbc:qeora;UID=kgh;PWD=fooey
使用JDBC开发数据库应用常用API介绍:驱动管理类:getConnection(String
url,String
user,Stringpassword)
用来获得数据库的连接数据库连接类(connection)会话声明类(Ststement)预编译(PreparedStatement)结果集(ResultSet)接口常用方法连接sql200的完整程序使用JDBC开发数据库应用可分为下面几个步骤:
(1)装载驱动程序;(2)建立与数据库的连接;(3)发送SQL语句;(4)处理结果;(5)关闭数据库连接1.装载JDBC驱动程序2.创建与数据库的连接3.创建语句对象
-Statement-PreparedStatement4.利用语句对象执行SQL语句得到的结果5.处理结果6.JDBC应用结束利用JDBC开发web数据库步骤数据库驱动程序
-JDBC:各数据厂商提供
-ODBC:sun提供
(sun.jdbc.odbc.JdbcOdbcDriver)1.装载驱动程序
Class.forName(“驱动名称”)例:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver
”)JDBC使用(1)2.连接数据库
connection
conn=DriverManager.getConnection(url)
connection
conn=DriverManager.getConnection(url,user,password)注意一:采用JDBC-ODBC桥连接,
url=jdbc:odbc:ODBC数据源例如:Connectionconn=DriverManager.getConnection(“jdbc:odbc:student”)注意二:DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433;DatebaseName=SCMIS”)DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433;DatebaseName=SCMIS”,”john”,”123”)JDBC使用(2)OracleDriver-Oracle.jdbc.driver.OracleDriverURL-jdbc:oracle:thin:@hostname:1521:dbnameSQLServerDriver-com.microsoft.jdbc.sqlserver.SQLServerDriverURL-jdbc:microsoft:sqlserver://hostname:1433;DatebaseName=dbnameMySQLDriver-org.gjt.mm.mysql.DriverURL-jdbc:mysql://hostname:3306/dbnameJDBC-ODBC桥形式Driver-sun.jdbc.odbc.JdbcOdbcDriverURL-
jdbc:odbc:ODBC数据源几种典型数据库的驱动程序和URL3.创建语句对象-Statement-PreparedStatement例:Statementstmt=conn.createStatement()JDBC使用(3)书写具体的SQL语句Stringsql="insertintoperson(name,password,age)values(‘john’,’123’,20)“;Stringsql=“updatepersonsetage=age+1“;Stringsql=“deletefrompersonwhereid=2”Stringsql=“select*fromperson“;4.执行SQL语句(1)stmt.executeUpdate(sql);返回是所影响记录的个数
Insert;update;delete(2)stmt.executeQuery(sql);返回ResultSet实例化对象
select使用JDBC使用(4)5.处理结果ResultSet的几个主要方法介绍如下:next():将游标从当前位置向下移动一行,返回值为boolean。在数据处理时,通常用于判断是否有符合条件的记录。getString():获取记录的数据。JDBC使用(5)6.关闭数据库
数据库在每次使用后必须关闭,关闭数据库操作的顺序与打开数据库操作的顺序相反,即:先关闭结果集ResultSet
再关闭操作Statement
最后关闭连接Connection例如:
ResultSet.close();
Statement.close();
Connection.close();
JDBC使用(6)连接sql2000的完整程序importjava.sql.*;publicclassL{publicstaticvoidmain(String[]args){Stringsql;Connectionconn;//数据库连接
Statementstmt;//发送到数据库执行的SQL命令
ResultSet
rs;//读取的数据
try{//加载sql2000数据库的红运程序Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//定义URL连接路径Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";Stringuser="sa";//数据库用户名
Stringpassword="";//数据库密码(为空)
conn=DriverManager.getConnection(url,user,password);//建立数据库连接
stmt=conn.createStatement();//建立连接声明
sql="select*frominfo";//定义sql语句
rs=stmt.executeQuery(sql);//执行SQL语句
while(rs.next()){//返回不为空System.out.println(rs.getString(1));//打印显示第一列System.out.println(rs.getString(2));//打印显示第二列}
rs.close();//关闭数据库操作
stmt.close();//关闭数据连接声明
conn.close();//关闭数据库连接}
catch(Exceptione){
e.printStackTrace();//打印错误栈内容}}}JDBC相关类介绍前面介绍了使用JDBC访问数据库的一般步骤,下面对其中涉及到的一些类和接口再作一个简单的介绍。1.DriverManager类
DriverManager
类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager
类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。对于简单的应用程序,程序员仅需直接使用该类的方法getConnection建立与数据库的连接。JDBC还允许用户调用DriverManager
的方法getDriver、getDrivers
和registerDriver以及Driver的方法connect。Driver为jdbc中定义的一个接口,每一个JDBC驱动程序都需要实现这个接口。一般情况下不需直接调用registerDriver,而是在加载驱动程序时由驱动程序自动调用。加载驱动程序有两种方法:(1)调用方法Class.forName显式地加载驱动程序类。这种方法与外部设置无关,因此推荐使用这种加载驱动程序的方法。例如,加载SQLServer2000的JDBC驱动程序:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");(2)将驱动程序添加到java.lang.System
的属性jdbc.drivers
中,这是一个由DriverManager
类加载的驱动程序类名的列表,由冒号分隔。初始化DriverManager
类时,它搜索系统属性jdbc.drivers,DriverManager
类将试图加载该属性指定的驱动程序。程序员可在Java虚拟机的配置文件中设置系统属性jdbc.drivers。这种方法很少使用。DriverManager类常用的方法有,用于建立与数据库的连接:
staticvoidderegisterDriver(Driverdriver):从驱动程序列表中删除已登记的驱动程序。
staticConnection getConnection(String
url)。
staticConnection getConnection(String
url,Propertiesinfo)。
staticConnection getConnection(String
url,Stringuser,Stringpassword)。用于获得或设置连接数据库时驱动程序与可以等待的最大时间staticDriver getDriver(String
url):根据JDBCURL获得对应的驱动程序。staticEnumeration getDrivers():获取当前已装载的JDBC驱动程序列表。staticint
getLoginTimeout()。staticvoidsetLoginTimeout(intseconds)。用于获得或设置写日志的PrintWriter对象staticPrintWriter
getLogWriter()staticvoid setLogWriter(PrintWriterout)staticvoid println(Stringmessage):输出信息到当前JDBC日志流staticvoid registerDriver(Driverdriver):登记给定的JDBC驱动程序。DriverManager类的静态方法getConnection用于与数据库建立连接,返回一个Connection接口类型的对象,用于表示JDBC驱动程序与数据库的连接。getConnection方法遍历驱动程序清单,将URL及参数传递给驱动程序类的connect方法,如果驱动程序支持该URL指定的子协议和子名称,则连接数据库并返回Connection对象。Statement接口及其子接口向数据库发送SQL语句的任务是由Statement对象完成的,Connection对象可以创建三种类型的Statement对象。它们分别是:
(1)Statement:用于执行不带参数的简单SQL语句。
(2)PreparedStatement:用于执行预编译的SQL语句,并允许在SQL语句中使用IN参数。
(3)Callablestatement:用于执行数据库存储过程的调用。它允许使用IN、OUT或INOUT三种类型的参数。Statement对象用于执行静态SQL语句(即不带参数的SQL语句)并获取处理结果。创建一个Statement对象,需调用Connection的方法createStatement。一般形式如下:Connectionconn=DriverManager.getConnection(URL,"USER","password");Statementstmt=conn.createStatement();
创建了Statement对象后,可调用其中的方法执行SQL语句。JDBC中提供了三种执行方法:execute、executeQuery和executeUpdate。executeUpdate方法
executeUpdate方法的形式为
publicint
executeUpdate(String
sql)throwSQLException
方法一般用于执行SQL的INSERT、UPDATE或DELETE语句,或者执行无返回值的SQLDDL语句(即SQL数据定义语言),如CREATE或DROP等。当执行INSERT等SQL语句时,此方法的返回值是这个SQL语句所影响的记录的总行数。若返回值为0,则表示执行未对数据库造成影响。若执行的语句是SQLDDL语句,返回值也是0。例一、使用executeUpdate执行SQL语句。publicclassInsertRec{ publicstaticvoidmain(String
args[]) { Stringurl="jdbc:odbc:AccessDB"; try{//加载jdbc-odbcbridge驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");//VisualJ++//与驱动器建立连接
Connectioncon=DriverManager.getConnection(url);//创建一个Statement对象
Statementstmt=con.createStatement();//执行SQL语句intcount1=stmt.executeUpdate("INSERTINTOtable1(name,sex,age)VALUES('吴化龙','男',30)");intcount2=stmt.executeUpdate("INSERTINTOtable1(name,sex,age)VALUES('王一飞','男',28)");//打印执行结果
System.out.println("Insertsuccessfully!");
System.out.println("Updatedrowsis"+(count1+count2)+".");//关闭连接stmt.close();
con.close(); }catch(Exceptionex){ //打印异常信息
System.out.println(ex.getMessage()); } }}execute方法的形式为
publicboolean
execute(String
sql)throwSQLException
这个方法比较特殊,一般只有在用户不知道执行SQL语句后会产生什么结果或可能有多种类型的结果产生时才会使用。例如,执行一组既包含DELETE语句又包含了SELECT语句的SQL命令,执行后既产生了一个ResultSet,又影响了相关记录,有两种类型的结果产生,这时必须用方法execute()执行以获取完整的结果。execute()的执行结果允许产生多个ResultSet,或多条记录被影响,或是两者都有。由于执行结果的特殊性,因此对调用execute后产生的结果的查询也有特定方法。Execute()方法本身的返回值是一个布尔值,当第一个结果为ResultSet时它返回true,否则返回false。Statement接口定义了getResultSet、getUpdateCount、getMoreResult等方法来查询执行execute()的结果。详细的参数可以查阅API帮助PreparedStatement的对象所包含的SQL语句中允许有一个或多个IN(输入)参数。创建PreparedStatement对象时,IN参数用“?”代替。在执行带参数的SQL语句前,必须对“?”进行赋值。PreparedStatement定义了很多方法,完成对IN参数赋值。创建一个PreparedStatement类的对象只需在建立连接后调用Connection中的prepareStatement方法:publicPreparedStatement
prepareStatement(String
sql)throwsSQLException例如,下面的语句用于创建一个PreparedStatement的对象,其中包含一条带参数的SQL声明:PreparedStatement
pstmt=con.prepareStatement("INSERTINTOtestTable(id,name)VALUES(?,?)");为IN参数赋值可以使用PreparedStatement中定义的形如setXXX的方法来完成,应根据IN参数的SQL类型选用合适的setXXX方法。例如对上面的SQL语句,若需将第一个参数设为3,第二个参数设为“XU”,即插入的记录id=3,name="XU",可用下面的语句实现:
pstmt.setInt(1,3);pstmt.setString(2,"XU");CallableStatement接口为JDBC程序调用数据库中的存储过程提供了一种标准方式,允许调用的存储过程带有IN参数、OUT(输出)参数或INOUT参数。CallableStatement除了继承了PreparedStatement中的方法外,还增加了处理OUT参数的方法。
CallableStatement对象可通过调用Connection中的prepareCall方法来创建,该方法的形式为
publicCallableStatement
prepareCall(String
sql)throwsSQLException创建CallableStatement对象主要用于执行存储过程,在使用前应了解使用的数据库系统是否支持存储过程。Mysql不支持这个功能ResultSet接口结果集ResultSet是用来代表执行SQL查询语句后产生的结果集合的抽象接口类。它的对象一般由Statement类及其子类通过方法execute或executeQuery执行SQL查询语句后产生,包含这些语句的执行结果。
ResultSet的通常形式类似于数据库中的表,包含符合查询要求的所有行。由于一个结果集可能包含多行数据,为读取方便,使用指针(cursor)来标记当前行,指针的初始位置指向第一行之前。ResultSet接口定义了next方法来移动指针,每调用一次next方法,指针下移一行:
publicbooleannext()
指针指向最后一行时,再调用next方法,返回值为false,表明结果集已处理完毕。通常,处理结果集的程序段采用下面的结构:
while(rs.next()){
//处理每一结果行
}结果集的指针指向要访问的记录后,可以通过ResultSet接口定义的一系列getXXX方法提供从当前行获得指定字段的值。例如:
rs.getInt("id");
rs.getString("name");ResultSet常用的方法还有:
publicint
findColumn(String
Columnname):根据指定的字段名找出对应的列序号。
publicboolean
wasNull():检查最新读入的一个列值是否为SQL的空(Null)类型值。
publicvoidclose():关闭结果集。大部分时候结果集不需要显式关闭,当产生结果集的Statement对象关闭或再次执行SQL语句时,将自动关闭相应的结果集;当读取多个结果集的下一结果集时,前一个结果集也将自动关闭。publicstaticvoidmain(String[]args){Stringsql;Connectionconn;//数据库连接
Statementstmt;//发送到数据库执行的SQL命令
ResultSet
rs;//读取的数据
try{//加载sql2000数据库的驱动程序Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//定义URL连接路径Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";Stringuser="sa";//数据库用户名
Stringpassword="";//数据库密码(为空)
conn=DriverManager.getConnection(url,user,password);//建立数据库连接
stmt=conn.createStatement();//建立连接声明
sql="select*frominfo";//定义sql语句
rs=stmt.executeQuery(sql);//执行SQL语句并返回数据
while(rs.next()){//返回不为空
System.out.println(rs.getString(1));//打印显示第一列
System.out.println(rs.getString(2));//打印显示第二列
}
rs.close();//关闭数据库操作
stmt.close();//关闭数据连接声明
conn.close();//关闭数据库连接}
catch(Exceptione){
e.printStackTrace();//打印错误栈内容§19.3数据库连接
MicrosoftAccess数据库管理系统
19.3.1建立数据库建立一个名字为factory的数据库。操作步骤如下:单击“开始”→“所有程序”→“MicrosoftAccess”,在新建数据库界面选择“空Access数据库”,然后命名、保存新建的数据库,在这里我们命名的数据库是factory,保存在当前目录中。§19.1.2创建表在factory管理的“表”的界面上选择“使用设计器创建表”,然后单击界面上的“设计”菜单,将出现相应的建表界面,我们建立的表是employee,该表的字段(属性)为:number(文本)name(文本)birthday(日期)salary(数字,双精度)。其中,“number”字段为主键。在factory管理的“表”的界面上,用鼠标双击已创建的表可以为该表添加记录。§19.3.2JDBC
JDBC(Java
DataBaseConnection)是Java数据库连接API。简单地说,JDBC能完成3件事:
与一个数据库建立连接。向数据库发送SQL语句。处理数据库返回的结果。§19.4连接数据库
§19.4.1
连接方式的选择和数据库建立连接的常用两种方式是:建立JDBC─ODBC桥接器和加载纯Java数据库驱动程序。使用JDBC─ODBC桥接器方式的机制是,应用程序只需建立JDBC和ODBC之间的连接,即所谓的建立JDBC─ODBC桥接器,而和数据库的连接由ODBC去完成。
使用JDBC─ODBC桥接器连接数据库的3个步骤建立JDBC-ODBC桥接器建ODBC数据源和ODBC数据源建立连接§19.4.2建立JDBC-ODBC桥接器
JDBC使用java.lang包中的Class类建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,必须捕获这个异常,建立桥接器的代码是:try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){
System.out.println(e);}§19.4.3ODBC数据源1.创建、修改或删除数据源选择“控制面板”→“管理工具”→“ODBC数据源”(某些window/xp系统,需选择“控制面板”→“性能和维护”→“管理工具”→“ODBC数据源”)。双击ODBC数据源图标,出现的界面显示了用户已有的数据源的名称。选择“系统DSN”或“用户DSN”,单击“添加”按钮,可以创建新的数据源;单击“配置”按钮,可以重新配置已有的数据源;单击“删除”按钮,可以删除已有的数据源。2.为数据源选择驱动程序因为要访问Access数据库,选择MicrosoftAcessDriver(*.mdb)。3.数据源名称及对应数据库的所在位置
在名称栏里为数据源起一个自己喜欢的名字,这里我们起的名字是star。这个数据源就是指某个数据库。在“数据库选择”栏中选择一个数据库,这里我们选择的是当前目录下的factory.mdb数据库。
§19.4.4建立连接编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。首先使用java.sql包中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象,建立连接时应捕获SQLException异常:try{Connectioncon=DriverManager.getConnection(“jdbc:odbc:数据源名字”,"loginname","password");}
catch(SQLExceptione){}
例题19-1§19.4.5查询操作对一个数据库中表进行查询操作的具体步骤如下。
1.向数据库发送SQL查询语句try{Statementsql=con.createStatement();}
catch(SQLExceptione){}2.处理查询结果
ResultSet
rs=sql.executeQuery("SELECT*FROMemployee");
一、顺序查询
通过使用JDBC提供的API,可以在查询之前知道表中的字段的个数和名字,步骤如下:1.连接对象con调用getMetaData()方法可以返回一个DatabaseMetaData对象,例如:
DatabaseMetaDatametadata=con.getMetaData();2.Metadata对象再调用getColumns可以将表的字段信息以行列的形式存储在一个ResultSet对象中,例如:
ResultSet
tableMessage=metadata.getColumns(null,null,"employee",null);
3.tableMessage对象调用next方法使游标向下移动一行(游标的初始位置在第1行之前),然后tableMessage调用getXXX方法可以查看该行中列的信息,其中最重要的信息是第4列,该列上的信息为字段的名字。例题19-2二、随机查询需要在结果集中前后移动、显示结果集指定的一条记录或随机显示若干条记录等。这时,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果集,需使用下述方法先获得一个Statement对象:Statementstmt=con.createStatement(inttype,intconcurrency);然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:
ResultSetre=stmt.executeQuery(SQL语句);滚动查询经常用到ResultSet的下述方法:publicbooleanprevious():将游标向上移动publicvoidbeforeFirst():将游标移动到结果集的初始位置。publicvoidafterLast():将游标移到结果集最后一行之后。publicvoidfirst():将游标移到结果集的第一行。publicvoidlast():将游标移到结果集的最后一行。publicboolean
isAfterLast():判断游标是否在最后一行之后。publicboolean
isBeforeFirst():判断游标是否在第一行之前publicboolean
ifFirst():判断游标是否指向结果集的第一行。publicboolean
isLast():判断游标是否指向结果集的最后一行。publicint
getRow():得到当前游标所指行的行号.0publicboolean
absolute(introw):将游标移到参数row指定的行号。例题19-3三、条件查询在下面的例子4中QueryByNumber和QueryBySalary是例子2中Query类的子类,二者分别能按雇员号和薪水查询记录。主类将查询条件传递QueryByNumber和QueryBySalary类的实例。例题19-4四、排序查询可以在SQL语句中使用ORDERBY子语句,对记录排序。按薪水排序查询的SQL语句:SELECT*FROMemployeeORDERBYsalary例题19-5五、模糊查询可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。下述语句查询姓氏是“张”或“李”的记录:
rs=sql.executeQuery(“SELECT*FROMstudentsWHERE姓名
LIKE‘[张李]%’”);例题19-6§19.5更新、添加与删除操作Statement对象调用方法:publicint
executeUpdate(String
sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。
更新、添加和删除记录的SQL语法分别是:◆UPDATE<表名>SET<字段名>=新值WHERE<条件子句>◆
INSERTINTO表(字段列表)VALUES(对应的具体的记录)或INSERTINTO表(VALUES(对应的具体的记录)◆DELETEFROM<表名>WHERE<条件子句>例题15-7§19.6查询Excel电子表格访问Exel电子表格和访问其它的数据库有所不同,假设有电子表格Goods.xls。连接Excel电子表格的步骤如下。1.设置表必须在电子表格中选出一工作区作为连接时使用的表。2.设置数据源为数据源选择的驱动程序必须是:MicrosoftExcelDriver。例题19-8§19.7使用预处理语句
Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。§19.7.1预处理语句优点
预处理不仅减轻了数据库的负担,而且也提高了访问数据库的速度。对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String
sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在Pre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初三学生自我鉴定合集(5篇)
- 2025年度汽车维修厂车辆维修培训承包合同3篇
- 品牌国际化的品牌差异化管理
- 【创新设计】高中物理教科版选修3-2-对点练习-第三章-传感器3.3-4
- 幼儿园消防活动方案
- 电梯安装实施方案
- 别再说刷爆了微信指数告诉你到底有多火
- 企业信息化综合管理系统
- 战略合作协议合同模板
- 骆驼饲养技术创新趋势考核试卷
- DB11-T 693-2024 施工现场临建房屋应用技术标准
- 民政部主管社团管理办法
- 工地施工临时用水及计算
- 三年级数学寒假每日一练
- 工作计划酒店上半年工作总结及下半年工作计划
- 石油词汇大全-俄语专业词汇
- 浅谈燃机电厂燃气管道的完整性管理
- 东营市学校安全工作先进个人申报表岳向明
- 防护设备操作手册
- 《中小学教师职业生涯规划与专业发展》讲座
- 牡丹籽油和文冠果油建设项目可行性研究报告模板备案审批
评论
0/150
提交评论