国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java數(shù)據(jù)庫(kù)編程中的技巧

2020-03-24 18:51:50
字體:
供稿:網(wǎng)友
1、java數(shù)據(jù)庫(kù)操作基本流程

2、幾個(gè)常用的重要技巧:

可滾動(dòng)、更新的記錄集

批量更新

事務(wù)處理

java數(shù)據(jù)庫(kù)操作基本流程:取得數(shù)據(jù)庫(kù)連接 - 執(zhí)行sql語(yǔ)句 - 處理執(zhí)行結(jié)果 - 釋放數(shù)據(jù)庫(kù)連接

1、取得數(shù)據(jù)庫(kù)連接

1)用DriverManager取數(shù)據(jù)庫(kù)連接

例子:

String html' target='_blank'>className,url,uid,pwd;
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
uid = "system";
pwd = "manager";
Class.forName(className);
Connection cn = DriverManager.getConnection(url,uid,pwd);

2)用jndi(java的命名和目錄服務(wù))方式

例子

String jndi = "jdbc/db";
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup(jndi);
Connection cn = ds.getConnection();

多用于jsp中

2、執(zhí)行sql語(yǔ)句

1)用Statement來執(zhí)行sql語(yǔ)句

String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 執(zhí)行數(shù)據(jù)查詢語(yǔ)句(select)
sm.executeUpdate(sql); // 執(zhí)行數(shù)據(jù)更新語(yǔ)句(delete、update、insert、drop等)statement.close();

2)用PreparedStatement來執(zhí)行sql語(yǔ)句

String sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); // 查詢
int c = ps.executeUpdate(); // 更新

3、處理執(zhí)行結(jié)果

查詢語(yǔ)句,返回記錄集ResultSet。

更新語(yǔ)句,返回?cái)?shù)字,表示該更新影響的記錄數(shù)。

ResultSet的方法:

1、next(),將游標(biāo)往后移動(dòng)一行,如果成功返回true;否則返回false。

2、getInt("id")或getSting("name"),返回當(dāng)前游標(biāo)下某個(gè)字段的值。

3、釋放連接。

cn.close();

一般,先關(guān)閉ResultSet,然后關(guān)閉Statement(或者PreparedStatement);最后關(guān)閉Connection

可滾動(dòng)、更新的記錄集

1、創(chuàng)建可滾動(dòng)、更新的Statement

Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);

該Statement取得的ResultSet就是可滾動(dòng)的

2、創(chuàng)建PreparedStatement時(shí)指定參數(shù)

PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet.absolute(9000);

批量更新

1、Statement

Statement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()

一個(gè)Statement對(duì)象,可以執(zhí)行多個(gè)sql語(yǔ)句以后,批量更新。這多個(gè)語(yǔ)句可以是delete、update、insert等或兼有

2、PreparedStatement

PreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch();

一個(gè)PreparedStatement,可以把一個(gè)sql語(yǔ)句,變換參數(shù)多次執(zhí)行,一次更新。

事務(wù)的處理

1、關(guān)閉Connection的自動(dòng)提交

cn.setAutoCommit(false);

2、執(zhí)行一系列sql語(yǔ)句

要點(diǎn):執(zhí)行每一個(gè)新的sql語(yǔ)句前,上一次執(zhí)行sql語(yǔ)句的Statement(或者PreparedStatemet)必須先close

Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();

sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();

3、提交

cn.commit();

4、如果發(fā)生異常,那么回滾

cn.rollback();html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 七台河市| 海门市| 德化县| 五华县| 宁武县| 红河县| 都匀市| 丰台区| 秦皇岛市| 合作市| 佛学| 红桥区| 始兴县| 和田市| 娱乐| 平遥县| 寿光市| 江门市| 越西县| 红原县| 乌鲁木齐市| 柞水县| 玉田县| 秭归县| 乐安县| 扎囊县| 新泰市| 乐亭县| 漠河县| 德安县| 常山县| 嘉义县| 东阿县| 临城县| 三江| 阿尔山市| 贵州省| 萝北县| 从化市| 绥芬河市| 墨脱县|