当前位置: 首页 > 知识库问答 >
问题:

为什么Java中的任何SQLite select查询都不起作用?

东方栋
2023-03-14

最近我遇到了一个问题:几乎没有sqlite查询在工作。请注意,插入等其他操作正在运行。我在StackOverflow和其他网站上读过很多不同的答案,但都不管用。

我的代码很简单:

    Statement stmt = null;

    String specTableArgs = """
            \"uuid\"    TEXT NOT NULL UNIQUE,
            \"pos\"     TEXT NOT NULL,
            \"victim\"  TEXT NOT NULL,
            PRIMARY KEY(\"uuid\")
            """;

    String testData = "INSERT INTO Spec (uuid,pos,victim) " +
            "VALUES(\"1etr\"," +
            "\"1;1\"," +
            "\"6iyr\")";

    // Let's say that it already exist
    String url = "jdbc:sqlite:/home/user/tmp/test.sqlite";
    Connection conn = DriverManager.getConnection(url);

    stmt = conn.createStatement();
    stmt.execute("CREATE TABLE IF NOT EXISTS \"Spec\" (" + specTableArgs + ");");

    stmt = conn.createStatement();
    stmt.execute(testData);

    /* Here is what DB contains (checked with DB browser):
    *  +-------+-----+--------+
    *  |  uuid | pos | victim |
    *  +-------+-----+--------+
    *  |  1etr | 1;1 |  6iyr  |
    *  +-------+-----+--------+
    */ 

    stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM Spec");

    while (rs.next()) {
        String plrID = rs.getString("uuid");
        String vicID = rs.getString("victim");
        System.out.println(plrID + "||" + vicID);
    }

当我在SQLite浏览器中执行SELECT*FROM Spec时,一切都很正常。但是Java没有输出例外。

共有1个答案

殷安顺
2023-03-14

啊,我已经解决了。问题出在我的功能上:

public ResultSet executeQuery(String sql) {
    try (Statement stmt = conn.createStatement()) {
        return stmt.executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
}

我不知道它是什么,但在我把它的逻辑变成这样之后,它起了作用:

// Here was call of above function
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Spec");
// Here was call of above function

while (rs.next()) {
      String plrID = rs.getString("uuid");
      String vicID = rs.getString("victim");
      logger.info(plrID + "||" + vicID);
}
 类似资料:
  • 问题内容: 在styles.css中,我正在使用媒体查询,这两个查询都使用以下变体: 当我缩小窗口时,这些网站的大小会调整为我希望在常规浏览器(Safari,Firefox)中使用的布局,但是,手机上的移动布局根本无法显示。相反,我只是看到默认的CSS。 谁能指出我正确的方向? 问题答案: 所有这三个都是有用的提示,但看来我需要添加一个元标记: 现在它似乎可以同时在Android(2.2)和iPh

  • > 在SWI-Prolog shell中,我执行以下命令:use_module(library(semweb/sparql_client))。加载sparql客户端库的 然后,在SWI-Prolog shell中,我执行以下SPARQL查询: ?-sparql_query('select count(*)where{?person a http://dbpedia.org/ontology/per

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案

  • 关于如何修复gradle版本,有很多很好的建议,但有些已经过时了,或者我只是找不到建议的路径。对我来说,一个解决方案是Project>Project Structure>Project>Gradle Version。 在这里我可以把它改成支持的版本,并且成功地构建项目。 从这个链接,它暗示这是设置你的gradle包装的方式。 因此,我希望Project/Platforms/Android/Grad

  • 我有一个用户表,ID列作为主键。我有这个功能在控制器: 此函数不回显任何内容。如果我从$id更改为$name,如下所示:

  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么