【问题标题】:Sending data by JDBC, strange case with StrictMode通过 JDBC 发送数据,使用 StrictMode 的奇怪情况
【发布时间】:2017-02-22 12:57:40
【问题描述】:

我的方法仅适用于StrictMode,当我删除StrictMode 时,我的应用程序在运行此方法后无限加载...并且永不停止。 不知道为什么,谁能解释一下?

public void sending() {

    Connection co = null;
    Statement st = null;

    try {
        StrictMode.ThreadPolicy po = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(po);

        Class.forName("com.mysql.jdbc.Driver");

        co = DriverManager.getConnection(url2, user2, pass2);

        st = co.createStatement();

        Double bb = latitude;
        Double bb1 = longitude;

        String sql2 = "INSERT table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')";
        st.executeUpdate(sql2);

    } catch (SQLException se) {
        se.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (st != null) {
                co.close();
            }
        } catch (SQLException se) {
        }
        try {
            if (co != null) {
                co.close();
            }
        } catch (SQLException se) {
            se.printStackTrace();
        }
    }
}

【问题讨论】:

  • 把你的代码放到一个线程中。
  • 您是否尝试在调试器中运行代码并单步执行,以便缩小失败的范围?
  • 顺便说一句。如果您的 SQL 以这种方式工作,我想知道您使用什么数据库。因为不应该。你应该像 YCF_L 所说的那样使用 PreparedStatement,这在几乎所有情况下都是一个好主意。

标签: java android jdbc


【解决方案1】:

您的查询有问题,应该是:

"INSERT Into table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')"

而不是:

"INSERT table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')"

您在查询中错过了 Into。


注意

您可能会遇到语法错误或 Sql 注入,我建议您使用PreparedStatement,这样更安全、更有帮助:

PreparedStatement preparedStatement = 
                connection.prepareStatement("INSERT into table (tab1, tab2) VALUES(?, ?)");
preparedStatement.setString(1, bb);
preparedStatement.setString(2, bb1);

【讨论】:

  • 我的查询工作正常,我检查了,当我从我的代码中删除 StrictMode 时出现问题
  • 没有错误,当“发送”调用时应用程序停止响应
  • NOOOOO 您的查询不起作用您的查询中有错误 Insert into 的语法不正确所以更改我所做的并检查您的问题是否仍然存在您可以在此处了解语法插入w3schools.com/sql/sql_insert.asp@forschool
  • 当我添加“into”时,应用程序仍然无法运行,我告诉过你,我的应用程序运行良好,但是当我删除 StrictMode 时它停止了,我不知道为什么
  • @YCF_L 我假设他的代码在到达 SQL 之前就失败了。该查询一定会失败,但这很可能不是他的主要问题。
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 2020-06-24
相关资源
最近更新 更多