为什么我从此方法获取重复记录?

时间:2015-04-16 19:03:31

标签: android mysql

我正在尝试使用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

我在查询中做错了什么?

1 个答案:

答案 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语句中比较从方法返回的值。

希望它有所帮助!