日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

jSP 通過JDBC操作數(shù)據(jù)庫的一些坑

 鴻蛟家平 2021-07-18

   最近想著給公司的一些賬號密碼做一個管理,就想做一個內(nèi)部網(wǎng)站。在處理數(shù)據(jù)庫的時候,jdbc的PreparedStatement 給了我很多坑。在此記錄一下:

1,查詢:比較順利

String sql = "select * from  pa_yc";

pstmt=conn.prepareStatement(sql);

rSet=pstmt.executeQuery();

while (rSet.next()) {

RemoteControlMsg remoteControlMsg=new RemoteControlMsg();

int id=rSet.getInt("id");

}

2,更新:坑 一堆堆

    第一個坑:

  String sql="UPDATE pa_yc set (pc_name = ?,xrk_no=?,xiangrikui_pwd=?,todesk_no=?,todesk_pwd=?) WHERE id = ?;";

Object[] objects = new Object[] {remote.getId(),remote.getPc_name(),remote.getXiangrikui_no(),remote.getXiangrikui_pwd(),remote.getTodesk_no(),remote.getTodesk_pwd()};

pstmt = conn.prepareStatement(sql1);

for(int i=0;i<objects.Length();i++){

pstmt.setObject(i+1,objects[i]);

}

正常情況下,這種方式是可以的。但是我用的時候始終有錯,折磨了好久,最后發(fā)現(xiàn) sql語句是有限制的。字符串太長就會被截斷舍棄。

然后我想著分開更新信息:

String sql1="update pa_yc set pc_name =? where id =?;";

String sql2="update pa_yc set xrk_no=? WHERE id =?";

String sql3="update pa_yc set xrk_pwd=? WHERE id =?";

String sql4="update pa_yc set td_pwd=? WHERE id =?";

String sql5="update pa_yc set td_no=? WHERE id =?";

Object[] objects = new Object[] {remote.getId(),remote.getPc_name(),remote.getXiangrikui_no(),remote.getXiangrikui_pwd(),remote.getTodesk_no(),remote.getTodesk_pwd()};

try {

pstmt = conn.prepareStatement(sql1);pstmt.setObject(1, objects[1]);pstmt.setObject(2, objects[0]);

pstmt.execute();pstmt.close();pstmt=null;

pstmt = conn.prepareStatement(sql2);pstmt.setObject(1, objects[2]);pstmt.setObject(2, objects[0]);

pstmt.executeUpdate();pstmt.close();pstmt=null;

pstmt = conn.prepareStatement(sql3);pstmt.setObject(1, objects[3]);pstmt.setObject(2, objects[0]);

pstmt.executeUpdate();pstmt.close();pstmt=null;

pstmt = conn.prepareStatement(sql4);pstmt.setObject(1, objects[4]);pstmt.setObject(2, objects[0]);

pstmt.executeUpdate();pstmt.close();pstmt=null;

pstmt = conn.prepareStatement(sql5);pstmt.setObject(1, objects[5]);pstmt.setObject(2, objects[0]);

pstmt.executeUpdate();pstmt.close();pstmt=null;

}

坑的地方:1,sql 中,set xxx = ?   這個地方 不能有”()“

2,在每一個pstmt.executeUpdate();后面,都需要pstmt.close();pstmt=null;

3,增加:比較順利,按照正常的方式

String sql = "insert INTO pa_yc(pc_name,xrk_no,xrk_pwd,td_no,td_pwd) values (?,?,?,?,?);";

try {

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, remoteControlMsg.getPc_name());

pstmt.setString(2, remoteControlMsg.getXiangrikui_no());

pstmt.setString(3, remoteControlMsg.getXiangrikui_pwd());

pstmt.setString(4, remoteControlMsg.getTodesk_no());

pstmt.setString(5, remoteControlMsg.getTodesk_pwd());

pstmt.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

Close();

}

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多