我正在尝试使用servlet将来自应用程序的一些坐标(来自txt文件)插入phpMyAdmin中的一个名为myTable
的表中(我使用AsyncTask将此语句作为字符串发送) :
INSERT INTO myTable(latitude, longitude) VALUES (" + coordinate.getLatitude()
+ "," + coordinate.getLongitude() + ")";
我使用的方法就是这个:
public boolean insertValuesToMyTable(String insertToTab) {
try {
connec = this.getConnection();
st = connec.createStatement();
if (connec != null) {
st.executeUpdate(insertToTab);
if (st.executeUpdate(insertToTab) > 0)
return true;
return false;
} else {
System.err.println("No database connection, ...");
return false;
}
} catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
return true;
} finally {
try {
//if (rs != null) rs.close(); //ResultSet
if (st != null) st.close(); //Statment
if (connec != null) con.close();
} catch (SQLException sqle) {
System.err.println("Inner SQLException: " + sqle.getMessage());
}
}
}
一切都很好,除了我得到重复的行。例如,对于文件中的2分(22.2525,56.5689)和(22.7812,25.1144),它将是:
id latitude longitude
1 22.2525 56.5689
2 22.2525 56.5689
3 22.7812 25.1144
4 22.7812 25.1144
通常应该是:
1 22.2525 56.5689
2 22.7812 25.1144
我在查询中做错了什么?
答案 0 :(得分:1)
您正在调用插入方法两次。
if (connec != null) {
st.executeUpdate(insertToTab);
if (st.executeUpdate(insertToTab) > 0)
return true;
return false;
}
尝试删除它,如下面的代码:
if (connec != null) {
if (st.executeUpdate(insertToTab) > 0)
return true;
return false;
}
它执行你的插入,并在if语句中比较从方法返回的值。
希望它有所帮助!