日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
JDBC中的添加、刪除、修改操作的共用方法

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

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網技術服務公司,擁有項目網站制作、網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元莊河做網站,已為上家服務,為莊河各地企業(yè)和個人服務,聯(lián)系電話:13518219792

下面來看一下吧:

/*

* 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)設置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ù)的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.沒有錯誤的話的就提交事務

this.conn.commit();

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

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

returntrue;

} catch (Exception e) {

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

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);

// 關閉不用的資源

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

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

}

}

}

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

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

這就要用到事務處理了

/*

     *添加用戶

     */

   publicBoolean add_Users()throwsSQLException {

      try{

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

           sql1 =newStringBuilder()

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

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

           // 添加日志

           sql2 =newStringBuilder()

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

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

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

           pars1 =newArrayList();

           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"));//權限與用戶狀態(tài)

           // 獲取當前操作員的u_id

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

           pars2 =newArrayList();

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

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

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

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

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

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

           pss =newArrayList ();

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

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

           // 設置參數(shù)

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

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

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

          returnthis.exceurePreparedStatement(pss);

       }finally{

           // 5.釋放使用資源

           DBUtils.close(ps1);

           DBUtils.close(ps2);

       }

    }

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

分析一下用法:

1. 設置sql語句

2. 編譯sql語句(用PreparedStatement)

3. 定義一個泛型PreparedStatement

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

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

6. 關閉不需要的資源


新聞名稱:JDBC中的添加、刪除、修改操作的共用方法
標題網址:http://www.dlmjj.cn/article/cdpdhhe.html