JDBC中的添加/刪除/修改操作的共用方法
來源:易賢網(wǎng) 閱讀:1485 次 日期:2015-09-04 20:25:30
溫馨提示:易賢網(wǎng)小編為您整理了“JDBC中的添加/刪除/修改操作的共用方法”,方便廣大網(wǎng)友查閱!

用來實現(xiàn)添加、刪除、修改操作的共用方法。分為兩個方法,一個是設(shè)置PreparedStatement ps;對象參數(shù)的方法。一個是執(zhí)行泛型PreparedStatement ps;對象的.

下面來看一下吧:

/*

* Author:spring

* Date :09-03-06 20:28

*/

private PreparedStatement setPreparedStatement(PreparedStatement ps,

List pars) throws SQLException {

try {

// 1.獲取數(shù)組的長度這樣能提高一點性能

int x = pars.size();

// 2.循環(huán)設(shè)置ps中需要的參數(shù)

for (int i = 0; i ﹤ x; i++) {

ps.setObject(i + 1, pars.get(i));

System.out.println(pars.get(i));

}

// 3.添加到緩沖區(qū)中

ps.addBatch();

// 4.設(shè)置完參數(shù)的ps返回

return ps;

} finally {

}

}

/*

* 執(zhí)行PreparedStatement泛型列表的方法

*/

privateboolean exceurePreparedStatement(List﹤PreparedStatement> pss)

throws SQLException {

int x = 0;

try {

// 1.為手動提交

this.conn.setAutoCommit(false);

// 2.執(zhí)行所有的PreparedStatement對象

x = pss.size();

for (int i = 0; i ﹤ x; i++) {

pss.get(i).executeBatch();

}

// 3.沒有錯誤的話的就提交事務(wù)

this.conn.commit();

System.out.println("執(zhí)行executeBatch()");

// 4.如果提交成功那就返回成功true

returntrue;

} catch (Exception e) {

// 出現(xiàn)異?;貪L事務(wù)

e.printStackTrace();

System.out.println("執(zhí)行批量時error");

this.conn.rollback();

//個性化異常

thrownew MyException("page.error.1000","1000 數(shù)據(jù)執(zhí)行的批量出錯.");

//throw new SQLException();

} finally {

// 最后把手動提交改為自動提交

this.conn.setAutoCommit(true);

// 關(guān)閉不用的資源

for (int i = 0; i ﹤ x; i++) {

DBUtils.close(pss.get(i));

}

}

}

//下面來介紹一下它們的用法

要實現(xiàn)一個用戶添加的功能,在添加的同時還要往log日志表中添加是誰操作的

這就要用到事務(wù)處理了

/*

*添加用戶

*/

public Boolean add_Users() throws SQLException {

try {

// 1.要執(zhí)行的sql語句

sql1 = new StringBuilder()

.append("insert into spring_users(U_ID,u_Name,u_Password,u_Email,u_State)")

.append(" values(SEQ_USERS.NEXTVAL,?,?,?,?)");

// 添加日志

sql2 = new StringBuilder()

.append("insert into SPRING_LOG(L_ID,L_NAME,U_ID,L_MESSAGE,L_DATE)")

.append(" values(SEQ_LOG.nextval,?,?,?,?)");

// 2.要設(shè)置的參數(shù)列表

pars1 = new ArrayList();

pars1.add(dto.get("u_Name")); // 用戶名

pars1.add(dto.get("u_Password")); // 用戶密碼

pars1.add(dto.get("u_Email")); // 用戶E-email

pars1.add(dto.get("u_Rating"));//權(quán)限與用戶狀態(tài)

// 獲取當前操作員的u_id

String u_Id = (String) dto.get("u_Id");

pars2 = new ArrayList();

pars2.add("SPRING_USERS"); // 設(shè)置1 操作的表名

pars2.add(u_Id); // 設(shè)置2 操作人id

pars2.add("這是用戶添加操作:用戶名:" + this.dto.get("u_Name"));// 設(shè)置3

// 描述看看是不是添加操作

pars2.add(Tools.getSqlTimestamp()); // 設(shè)置4 操作時間

// 3.編譯sql語句并設(shè)置參數(shù)

pss = new ArrayList();

ps1 = this.conn.prepareStatement(sql1.toString());

ps2 = this.conn.prepareStatement(sql2.toString());

// 設(shè)置參數(shù)

pss.add(this.setPreparedStatement(ps1, pars1));

pss.add(this.setPreparedStatement(ps2, pars2));

// 4.調(diào)用執(zhí)行sql語句的方法

returnthis.exceurePreparedStatement(pss);

} finally {

// 5.釋放使用資源

DBUtils.close(ps1);

DBUtils.close(ps2);

}

}

這里的一些方法是我封裝的像獲取當前用戶的u_id , String u_Id = (String) dto.get("u_Id");這是我用的構(gòu)造傳過來的dto所以我們不用管它;

分析一下用法:

1. 設(shè)置sql語句

2. 編譯sql語句(用PreparedStatement)

3. 定義一個泛型PreparedStatement

4. 設(shè)置PreparedStatement的參數(shù)返回來添加到泛型里

5. 調(diào)用執(zhí)行泛型中的PreparedStatement 對象

6. 關(guān)閉不需要的資源

更多信息請查看IT技術(shù)專欄

更多信息請查看數(shù)據(jù)庫
易賢網(wǎng)手機網(wǎng)站地址:JDBC中的添加/刪除/修改操作的共用方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)