Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaJDBC只允许一次连接到SQLITE.db文件_Java_Sqlite - Fatal编程技术网

使用JavaJDBC只允许一次连接到SQLITE.db文件

使用JavaJDBC只允许一次连接到SQLITE.db文件,java,sqlite,Java,Sqlite,我正在使用Java8和 我有一个应用程序,它有多个用户,每个用户都有自己的数据库(dbFile.db),但是任何用户在未连接时也可以连接到其他用户的数据库 问题是,我希望每次只有一个用户能够连接到dbFile.db,如果他/她没有断开连接(关闭数据库连接),那么其他用户就不能打开与该数据库文件的连接 代码很简单,我只是使用JDBC和Java8打开一个连接 try { //!I want here to check if another user is connected to

我正在使用Java8和

我有一个应用程序,它有多个用户,每个用户都有自己的数据库(
dbFile.db
),但是任何用户在未连接时也可以连接到其他用户的数据库

问题是,我希望每次只有一个用户能够连接到
dbFile.db
,如果他/她没有断开连接(关闭数据库连接),那么其他用户就不能打开与该数据库文件的连接

代码很简单,我只是使用JDBC和Java8打开一个连接

 try {
        //!I want here to check if another user is connected to the database!
       if(otherUserConnected)
            return;

        // Open connection
        Connection connection = DriverManager.getConnection("jdbc:sqlite:C:/../../users/d/dbFile.db");
        connection.setAutoCommit(false);

    } catch (SQLException ex) {
        Main.logger.log(Level.SEVERE, "", ex);
    }

用于防止与数据库的任何其他连接。

SQLite不是真正的RDBMS;这只是一个文件。您必须自己管理这种需求。我将创建一个属性数据库。我将有一个名为property的列。在专栏中,我将添加connectionEstablished。然后我将创建一个名为state的列。我会将该值设置为false。在允许某人连接到另一个db之前,我会检查此属性值。一旦某个on连接到另一个db,就会将value设置为true。当它们断开连接时,我会将其设置为false。@Makoto MySql提供了这样的机制吗?我可以换衣服。@SedrickJefferson你好,Sedrick。问题总是来了。如果应用程序从任务栏终止或出现错误,该怎么办。坏人将永远被锁住。因为锁将保留。我需要一些想法来解决它。很好!您必须使用始终在close上运行的块。请给我Java代码好吗☺️? 如果用户从任务栏终止应用程序,会发生什么?“PRAGMA”将永远不变?PRAGMA是一个SQL命令;只要执行它。SQLite使用操作系统锁定功能,所以Windows会自动移除锁定。为什么你的答案会被否决?可能是因为你只提供了链接。如果您添加一些代码行,我可以接受:)