java利用PreparedStatement批量提交数据后,表中所有的varchar类型字段内容均被加上了双引号,如图:
处理代码:
sql = "INSERT INTO tbvoscdr VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement psts = conn.prepareStatement(sql);
//for(int k =0;k<50;k++){
while ((strArray = queue.poll()) != null) {
Date startTime = new Date(Long.parseLong(strArray[17]));
Date stopTime = new Date(Long.parseLong(strArray[18]));
psts.setLong(1, Long.valueOf(strArray[36]));
psts.setString(2, String.valueOf(strArray[0]));
psts.setString(3, strArray[1]);
psts.setString(4, strArray[2]);
psts.setString(5, strArray[3]);
psts.setString(6, strArray[4]);
psts.setString(7, strArray[5]);
psts.setString(8, strArray[7]);
psts.setString(9, strArray[9]);
psts.setString(10, strArray[10]);
psts.setString(11, strArray[12]);
psts.setInt(12, Integer.valueOf(strArray[16]));
psts.setString(13, df.format(startTime));
psts.setString(14, df.format(stopTime));
psts.setInt(15, Integer.valueOf(strArray[21]));
psts.setInt(16, Integer.valueOf(strArray[23]));
psts.setDouble(17, Double.valueOf(strArray[24]));
psts.setDouble(18, Double.valueOf(strArray[27]));
psts.setString(19, strArray[28]);
psts.setString(20, strArray[29]);
psts.setDouble(21, Double.valueOf(strArray[31]));
psts.setString(22, strArray[34]);
psts.setString(23, strArray[35]);
psts.setString(24, strArray[37]+","+strArray[38]);
psts.setInt(25, Integer.valueOf(strArray[39]));
psts.setString(26, strArray[40]);
psts.setString(27, strArray[41]);
psts.setInt(28, Integer.valueOf(strArray[42]));
psts.setInt(29, Integer.valueOf(strArray[43]));
psts.addBatch();
}
//}
if(count != 0){
psts.executeBatch(); // 执行批量处理
conn.commit(); // 提交
//System.out.println(""+count);
}
尝试了很久没办法将字符串“”去除,希望各路神仙指点一二,谢谢!
String text = new String(dp.getData(),0,dp.getLength());//DatagramPacket包
String[] strArray = null;
strArray = text.split(",");
被处理的strArray本身是不带有""的!
誰も注意を払わなかったため、最終的には最も愚かなメソッド replace() を使用する必要がありました...
文字列自体に
""
が含まれているからではないでしょうか?