日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

java调用数据库的基本步骤_java数据库操作基本流程和技巧

發(fā)布時(shí)間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用数据库的基本步骤_java数据库操作基本流程和技巧 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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 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來(lái)執(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來(lái)執(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();

總結(jié)

以上是生活随笔為你收集整理的java调用数据库的基本步骤_java数据库操作基本流程和技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。