数据库操作Word下载.docx
- 文档编号:19417726
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:14
- 大小:20.16KB
数据库操作Word下载.docx
《数据库操作Word下载.docx》由会员分享,可在线阅读,更多相关《数据库操作Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
TYPE_FORWARD_ONLY
默认的结果集类型,这种类型的结果集对象的游标只能向前移动,从第1行的前面到最后一行的后面。
TYPE_SCROLL_INSENSITIVE
这种类型的结果集对象的游标可以向前移动,也可以直接定位到某一行上,但是对结果集中对应数据的变化是不敏感的。
TYPE_SCROLL_SENSITIVE
这种类型的结果集对象的游标可以向前移动,也可以直接定位到某一行上,并且对结果集中对应数据的变化是敏感的(如果)。
2.结果集的并发性决定了结果集所支持的更新操作的层次,有两种并发性层次:
CONCUR_READ_ONLY
默认的结果集并发类型,这种情况下的结果集对象不支持更新操作。
CONCUR_UPDATABLE
这种情况下的结果集对象支持更新操作。
可以通过调用DatabaseMetaData的supportsResultSetConcurrency方法来看驱动是否支持结果集上的更新操作,该方法定义如下:
booleansupportsResultSetConcurrency(inttype,intconcurrency)throwsSQLException
第一个数据表示结果集类型,第二个参数表示并发类型。
3.结果集的延续性是指当事务提交时,在当前事务中创建的结果集是否关闭。
默认情况下会关闭这个结果集对象。
延续性可以通过如下两个静态属性来指定:
HOLD_CURSORS_OVER_COMMIT
当提交事务时不关闭该结果集对象。
CLOSE_CURSORS_AT_COMMIT
提交事务时关闭结果集对象,有时候会提高性能。
4.结果集的类型、并发性和延续性可以通过Connection.createStatement、Connection.prepareStatement和Connection.prepareCall等方法指定,同时Statement、PreparedStatement和CallableStatement接口也提供了相应的setter方法和getter方法。
如下代码是创建语句对象的时候指定结果集的类型、并发性和延续性。
Connectionconn=ds.getConnection(user,passwd);
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY,ResultSet.CLOSE_CURSORS_AT_COMMIT);
5.结果集常用的游标操作方法如下表所示:
返回值
方法名
功能描述
boolean
next()
将游标从当前位置向前移一行,如果指向某行,返回true,如果指向最后一行的后面,返回false
previous()
将游标从当前位置向后移一行,如果指向某行,返回true,如果指向第一行的前面,返回false
first()
将游标移到此结果集的第一行。
last()
将游标移到些结果集的最后一行。
void
beforeFirst()
将游标移动到此结果集的开始处,正好位于第一行之前
afterLast()
将游标移动到此结果集的末尾,正好位于最后一行之后
relative(introws)
按相对行数移动游标。
如果参数为0,游标无变化。
如果参数是正的,游标向前移动rows行,如果rows太大,游标指向最后1条记录的后面。
如果参数是负数,游标向后移动rows行,如果rows太小,游标指向第1条记录的前面。
如果游标指向一个有效行,方法返回true,否则返回false
absolute(introw)
将游标移动到参数所指定的行
6.以下是示例代码:
//获取结果集中列的类型
ResultSetrs=stmt.executeQuery(sqlString);
ResultSetMetaDatarsmd=rs.getMetaData();
int[]colType=newint[rsmd.getColumnCount()];
for(intidx=0,intcol=1;
idx<
colType.length;
idx++,col++)
colType[idx]=rsmd.getColumnType(col);
//如果结果集支持更新操作,可以通过结果集完成更新、删除和插入操作。
Statementstmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
ResultSetrs=stmt.executeQuery(“selectauthorfrombooklistwhereisbn=111”);
rs.next();
rs.updateString(“author”,”JerryChoi”);
rs.updateRow();
//插入记录
ResultSetrs=stmt.executeQuery(“selectauthor,title,isbnfrombooklist”);
rs.moveToInsertRow();
//设置每一列的值
rs.updateString(1,”aaa”);
rs.updateString(2,”bbb”);
rs.updateLong(3,1234);
//插入一行
rs.insertRow();
rs.moveToCurrentRow();
//删除记录
rs.absolute(4);
rs.deleteRow();
三、连接数据库的基本过程
基本过程如下:
l建立数据源
l导入用到的包
l加载驱动程序
l创建与数据库的连接
l创建语句对象
l编写SQL语句
l执行SQL语句
l处理数据
l关闭相关对象
l处理异常
1.
建立数据源
假设已经存在名为bookstore的MySQL数据库。
2.
导入用到的包
importjava.sql.*;
3.
加载驱动程序
//如果驱动程序和名字是MyDriver,加载驱动程序的语句是:
Class.forName(“MyDriver”);
//或者
Class.forName(“MyDriver”).newInstance();
//本例中使用MySQL,刚加载的语句为:
Class.forName(“com.mysql.jdbc.Driver”);
4.
创建与数据库的连接
连接数据库需要知道如下信息:
l数据库所在的主机,所使用的端口等
l数据库的名字
l用户信息,包括用户名和口令
//连接数据库的格式如下:
//constr:
连接字符串;
user:
用户名;
passwd:
口令
Connectioncon=DriverManager.getConnection(constr,user,passwd);
//MySQL数据库的连接示例如下:
Connectioncon=DriverManager.getConnection(“jdbc:
mysql:
//localhost:
3306/bookstore”,”root”,”root”);
以下表格是常用的数据库驱动程序名字和URL格式:
数据库
驱动程序
URL
Oracle
oracle.jdbc.driver.OracleDriver
jdbc:
oracle:
thin:
@dbip:
port:
databasename
dbip
:
数据库服务器的IP地址,如果是本地可写localhost或127.0.0.1。
port
数据库的监听端口,需要看安装时的配置,缺省为1521。
databasename:
数据库的SID,通常为全局数据库的名字。
SQLServer
com.microsoft.jdbc.sqlserver.SQLServerDriver
microsoft:
sqlserver:
//dbip:
port;
DatabaseName=databasename
数据库的监听端口,需要看安装时的配置,缺省为1433。
DB2
com.ibm.db2.jdbc.app.DB2Driver
db2:
port/databasename
数据库的监听端口,需要看安装时的配置。
Informix
com.informix.jdbc.IfxDriver
infoxmix-sqli:
port/testDB:
INFORMIXSERVER=databasename;
user=username;
password=userpassword
用户名
password:
用户口令
Sybase
com.sybase.jdbc.SybDriver
sybase:
Tds:
dbip:
MySQL
com.mysql.jdbc.Driver
或
org.gjt.mm.mysql.Driver
port/databasename[?
param1=value1][&
param2=value2]……
注:
[]是可选的选项
数据库服务器的IP地址,如果是本地可写成localhost或127.0.0.1。
port:
数据库的监听端口,需要看安装时的配置,缺省为3306。
param1、param2、value1和value2:
附加参数,常见参数如下:
luser:
lpassword:
密码
lautoReconnect:
联机失败时是否重新联机(true/false)
lmaxReconnect:
尝试重新联机次数
linitialTimeout:
尝试重新联机间隔
lmaxRows:
传回最大行数
luseUnicode:
是否使用Unicode编码(ture/false)
lcharacterEncoding:
何种编码
lrelaxAutocommit:
是否自动提交(true/false)
lcapitalizeTypeNames:
数据定义的名称以大写表示
PostgreSQL
org.postgresql.Driver
postgresql:
Access
sun.jdbc.odbc.JdbcOdbcDriver
odbc:
datasourcename
datasourcename:
该驱动只能工作在Windows系统中,首先需要在操作系统中建立一个可以访问Access数据库的本地数据源(ODBC),如果名字为allandb,那么URL写法如下:
allandb
5.
创建语句对象
语句对象的作业就是执行SQL语句。
语句对象的创建是通过连接对象创建的,所以在创建语句对象之前应该确保连接对象已经创建。
以下代码是创建语句对象的代码,不管连接什么数据库,不管执行什么样的操作,这句代码不用改:
Statementstmt=con.createStatement();
6.
编写SQL语句
示例代码如下:
Stringsql=“select*fromusertable”;
7.
执行SQL语句
常用的执行SQL语句的方法有以下两个:
方法
说明
ResultSet
executeQuery(Stringsql)
主要用于执行有结果集返回的SQL语句,典型的就是select查询语句。
int
executeUpdate(Stringsql)
主要用于执行没有结果集返回的SQL语句,如果要在数据库中添加、修改或删除信息,它们都没有返回值,应该使用本方法。
该方法的返回值是一个整数,表示影响数据库中记录的个数。
例如,要执行上面的查询语句,可以使用如下代码:
ResultSetrs=stmt.executeQuery(sql);
8.
处理结果集
可参照上面的“结果集及其常见方法”
对行的遍历,使用结果集的next()方法。
要获取某一列,可以使用getXXX(intcolumnIndex)或getXXX(StringcolumnLabel)方法。
以下是示例代码:
//以字符串的形式获取第1列或字段名为username的列
Stringuserid=rs.getString
(1);
StringuserName=rs.getString(“username”);
9.
关闭相关对象
代码如下:
//应该按以下顺序关闭相关对象,该顺序与创建对象的顺序相反
//关闭结果集
rs.close();
//关闭语句
stmt.close();
//关闭连接
con.close();
10.
异常处理
使用以下框架对异常进行处理:
try{
……//要执行的可能出错的代码
}catch(Exceptione){
……//出错后的处理代码
}finally{
……//不管是否出错都要执行的代码
}
以下是综合示例代码:
StringclassName=“com.mysql.jdbc.Driver”;
Stringurl=“jdbc:
3306/bookstore”;
Stringusername=“root”;
Stringuserpass=“root”;
StringtableName=“usertable”
Connectioncon=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
Class.forName(className);
con=DriverManager.getConnection(url,username,userpass);
pstmt=con.prepareStatement(“select*from“+tableName);
rs=pstmt.executeQuery();
while(rs.next())
{
for(inti=0;
i<
rs.getMetaDate().getColumnCount();
++i)
System.out.println(rs.getString(i+1));
System.out.println();
System.out.println(e.toString);
try{rs.close();
}catch(Exceptione){}
try{pstmt.close();
try{con.close();
分类:
Java
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 操作