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

Java中的SQLite3-如何确定我的连接是否有效并且存在表?

戚鸿
2023-03-14

我正在Java制作一个游戏,在其中我将一些数据存储在单个SQLite表中。由于db连接对游戏来说不是强制性的,因此我希望在发生错误时它可以玩,但同时隐藏任何会导致数据库查询或更新的内容。因此,我想确定连接是否有效以及我的表是否存在。

以下是我现有的连接代码

public Connection connect() {
    try {
        String url = "jdbc:sqlite:C:Program Files/sqlite/points.db";
        // create a connection to the database
        Connection connection = DriverManager.getConnection(url);
        if( connection.isValid(100)) {
            return connection;
        }
        return null;
    } catch (SQLException e) {
        System.out.println("Database connection failed" + e.getMessage());
        return null;
    }
}

然而,这仍然返回连接,即使指向。指定位置不存在db。


共有1个答案

东门新立
2023-03-14

做了一些调查,找到了解决办法。

public Connection connect() {
    try {
        String url = "jdbc:sqlite:C:Program Files/sqlite/points.db";
        // create a connection to the database
        Connection connection = DriverManager.getConnection(url);
        if( connection.isValid(100) ) {
            String sql =  "SELECT * FROM sqlite_master where type = ? and tbl_name = ? ";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "table");
            preparedStatement.setString(2, "points");
            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next() && resultSet.getString("name").equals("points") ) {
                resultSet.close();
                return connection;
            }
        }
        return null;
    } catch (SQLException e) {
        System.out.println("Database connection failed" + e.getMessage());
        return null;
    }
}

检查哪些表可用的查询可能不需要是一个准备好的语句。

 类似资料:
  • 我们使用.Net MySql Connector的v6.9.9使用此连接字符串访问MySql,指定需要SSL。 我们的DBA已经启用了对SSL的支持,但在测试期间,无论我的机器上是否安装了证书,也不管我是否具有“SSL模式=必需”都可以连接到服务器。 然而,当我的DBA禁用SSL时,如果我使用上述连接字符串,我会得到一个错误,即SSL未启用。 因此,我真的不知道我的网络流量是否被加密。如何验证?

  • 问题内容: 你如何检查是否可以通过Java连接到Internet?一种方法是: 但是是否有更合适的方法来执行该任务,特别是如果你需要经常进行连续检查并且很有可能断开互联网连接时? 问题答案: 你应该连接到实际应用程序需要的地方。否则,你要测试是否与某个无关的地方(在这种情况下为Google)建立了连接。 特别是,如果你要尝试与Web服务进行通信,并且要控制该Web服务,则最好使用某种廉价的“获取状

  • 问题内容: 我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持unix)或显示JOptionPane并要求用户输入密码(如果操作系统支持图形界面(例如Windows))。 有人可能会争辩说,在上述两种情况下控制台始终可用,因此控制台输入就足够了。但是问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一

  • 问题内容: 如果我有rdd,我如何理解数据为key:value格式?有没有办法找到相同的东西-像type(object)告诉我对象的类型。我试过了,但这只是说。 假设我有一个类似的数据,我使用 和得到了。有没有一种方法可以将x和y定义 为键和值?还是键必须是单个值?我注意到,如果我使用和函数来获取数据,那么将这些数据定义为键值对变得容易得多 问题答案: Python是一种动态类型化的语言,PySp

  • 问题内容: 有谁知道PHP的健壮(和防弹)is_JSON函数代码片段?我(显然)遇到一种情况,我需要知道字符串是否为JSON。 嗯,也许通过JSONLint请求/响应来运行它,但这似乎有点过头了。 问题答案: 如果您使用内置的PHP函数,则 返回最后一个错误(例如, 当您的字符串不是JSON时)。 无论如何通常都会返回。

  • 问题内容: 在JMS中,很容易找出连接是否丢失,是否发生异常。但是,如何确定连接是否再次存在? 场景:我使用JMS与服务器通信。现在我的连接断开了(服务器已关闭),这导致了异常。到目前为止,一切都很好。如果服务器再次启动并重新建立连接,我怎么知道? 我看不到任何可以提供此类信息的侦听器。 问题答案: 啊…旧的异常处理/重新连接难题。 有些传输提供程序将为您自动重新连接您的应用程序,而另一些传输提供