java

位置:IT落伍者 >> java >> 浏览文章

专家为您详解JAVA数据库基本操作


发布日期:2019年03月24日
 
专家为您详解JAVA数据库基本操作
java 数据库基本操作

java数据库操作基本流程

几个常用的重要技巧

可滚动更新的记录集

批量更新

事务处理

java数据库操作基本流程取得数据库连接 执行sql语句 处理执行结果 释放数据库连接

取得数据库连接

)用DriverManager取数据库连接

例子

String classNameurluidpwd;

className = oraclejdbcdriverOracleDriver;

url = jdbc:oracle:thin:@::orasvr;

uid = system;

pwd = manager;

ClassforName(className);

Connection cn = DriverManagergetConnection(urluidpwd);

)用jndi(java的命名和目录服务)方式

例子

String jndi = jdbc/db;

Context ctx = (Context) new InitialContext()lookup(java:comp/env);

DataSource ds = (DataSource) ctxlookup(jndi);

Connection cn = dsgetConnection();

多用于jsp中

执行sql语句

)用Statement来执行sql语句

String sql;

Statement sm = cncreateStatement();

smexecuteQuery(sql); // 执行数据查询语句(select)

smexecuteUpdate(sql); // 执行数据更新语句(deleteupdateinsertdrop等)statementclose();

)用PreparedStatement来执行sql语句

String sql;

sql = insert into user (idname) values (??);

PreparedStatement ps = cnprepareStatement(sql);

pssetInt(xxx);

pssetString(xxx);

ResultSet rs = psexecuteQuery(); // 查询

int c = psexecuteUpdate(); // 更新

处理执行结果

查询语句返回记录集ResultSet

更新语句返回数字表示该更新影响的记录数

ResultSet的方法

next()将游标往后移动一行如果成功返回true否则返回false

getInt(id)或getSting(name)返回当前游标下某个字段的值

释放连接

cnclose();

一般先关闭ResultSet然后关闭Statement(或者PreparedStatement)最后关闭Connection

可滚动更新的记录集

创建可滚动更新的Statement

Statement sm = cncreateStatement(ResultSetTYPE_SCROLL_ENSITIVEResultSetCONCUR_READ_ONLY);

该Statement取得的ResultSet就是可滚动的

创建PreparedStatement时指定参数

PreparedStatemet ps = cnprepareStatement(sqlResultSetTYPE_SCROLL_INSENSITIVEResultSetCONCUR_READ_ONLY);

ResultSetabsolute();

批量更新

Statement

Statement sm = cncreateStatement();

smaddBatch(sql);

smaddBatch(sql);

smexecuteBatch()

一个Statement对象可以执行多个sql语句以后批量更新这多个语句可以是deleteupdateinsert等或兼有

PreparedStatement

PreparedStatement ps = cnpreparedStatement(sql);

{

pssetXXX(xxx);

psaddBatch();

}

psexecuteBatch();

一个PreparedStatement可以把一个sql语句变换参数多次执行一次更新

事务的处理

关闭Connection的自动提交

cnsetAutoCommit(false);

执行一系列sql语句

要点执行每一个新的sql语句前上一次执行sql语句的Statement(或者PreparedStatemet)必须先close

Statement sm ;

sm = cncreateStatement(insert into user);

smexecuteUpdate();

smclose();

sm = cncreateStatement(insert into corp);

smexecuteUpdate();

smclose();

提交

cncommit();

如果发生异常那么回滚

cnrollback();

上一篇:Java相关:应用数据库Hibernate对多表关联查询

下一篇:体验纯Java数据库——Derby