电竞比分网-中国电竞赛事及体育赛事平台

分享

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

 鴻蛟家平 2021-07-18

   最近想著給公司的一些賬號(hào)密碼做一個(gè)管理,就想做一個(gè)內(nèi)部網(wǎng)站。在處理數(shù)據(jù)庫的時(shí)候,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,更新:坑 一堆堆

    第一個(gè)坑:

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

}

正常情況下,這種方式是可以的。但是我用的時(shí)候始終有錯(cuò),折磨了好久,最后發(fā)現(xiàn) sql語句是有限制的。字符串太長就會(huì)被截?cái)嗌釛墶?/p>

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

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 = ?   這個(gè)地方 不能有”()“

2,在每一個(gè)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)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多