多线程并发向数据库插入数据问题
唱歌的后续 2015-01-22 10:03:11 String insertMapRecorderStr = "insert into map (zoom_level,tile_column,tile_row,tile_id) values(?,?,?,?)";
String insertImageRecorderStr = "insert into images (tile_id,tile_data,tile_md5) values(NULL,?,?)";
String queryImageStr = "select tile_id from images where tile_md5=?";
String queryLastTileIDStr = "select last_insert_rowid()";
pstmt = conn.prepareStatement(queryImageStr);
pstmt.setString(1, imageMd5);
rs = pstmt.executeQuery();
int tile_id = -1;
while (rs.next()) {
tile_id = rs.getInt("tile_id");
}
if (tile_id == -1) {
pstmt = conn.prepareStatement(insertImageRecorderStr);
pstmt.setBytes(1, bytes);
pstmt.setString(2, imageMd5);
pstmt.executeUpdate();
pstmt = conn.prepareStatement(queryLastTileIDStr);
ResultSet idRes = pstmt.executeQuery();
while (idRes.next()) {
tile_id = idRes.getInt(1);
}
}
pstmt = conn.prepareStatement(insertMapRecorderStr);
pstmt.setInt(1, cutPicture.getLevel());
pstmt.setInt(2, cutPicture.getCol());
pstmt.setInt(3, cutPicture.getRow());
pstmt.setInt(4, tile_id);
pstmt.executeUpdate();
具体代码块就是这部分向数据库插入的语句,问题出在我多线程并发执行的时候map表中的tile_id会出错,求问大神应该如何解决此类问题。