Java Sqlite连接列表

Java Sqlite连接列表,java,jdbc,sqlite,Java,Jdbc,Sqlite,我正在使用JDBC驱动程序连接SQlite。我想从SQLite命令提示符检查数据库引擎中打开了多少连接。有人能告诉我怎么做吗?在java.sql包中没有API可以做到这一点。您必须在您身边执行此操作,例如,使用单例类来创建连接,并跟踪所创建连接的数量 PS:当然,这只会计算底层运行的JVM实例中的连接数。是一个-每个访问数据库文件的进程本质上都有自己的DB引擎。独立引擎之间的唯一交互是通过底层操作系统的文件锁定功能,这确保了在尝试更新DB文件时,各个进程不会相互干扰 由于这种设计,就SQLite

我正在使用JDBC驱动程序连接SQlite。我想从SQLite命令提示符检查数据库引擎中打开了多少连接。有人能告诉我怎么做吗?

java.sql
包中没有API可以做到这一点。您必须在您身边执行此操作,例如,使用
单例
类来创建连接,并跟踪所创建连接的数量

PS:当然,这只会计算底层运行的JVM实例中的连接数。

是一个-每个访问数据库文件的进程本质上都有自己的DB引擎。独立引擎之间的唯一交互是通过底层操作系统的文件锁定功能,这确保了在尝试更新DB文件时,各个进程不会相互干扰

由于这种设计,就SQLite而言,没有单一的控制点。sqlite3shell实用程序实际上包含SQLite数据库引擎本身的一个副本,这就是它处理DB文件的方式—它不会“连接”到另一个应用程序。事实上,SQLite文档中的术语“连接”之所以被使用(mis),是因为DB工程师非常熟悉它——实际上,它只不过是打开一两个文件而已

因此,
sqlite3
实用程序除了在另一个进程修改数据库时偶尔遇到锁定文件外,无法知道任何其他应用程序正在做什么

如果您想知道应用程序对底层数据库做了什么,您必须在基本SQLite3库周围找到/编写一个包装器,该包装器将执行您需要的任何其他簿记操作—可能提供一个控制接口。基本SQLite库本身没有任何这样的功能,因为它们被认为超出了它的范围

包装器方法的问题是,应用程序仍然不知道其他进程在做什么。您可以让所有使用包装器的进程在中央访问点(文件/网络服务/…)收集数据,但仅此而已-任何其他进程(例如
sqlite3
shell)仍将直接访问DB文件

但是,如果您只需要知道到DB文件的“连接”数量,那么可能有一种(绝对不可移植的)方式:每个“连接”都会导致打开DB文件,因此您可以使用特定于平台的实用程序来找出哪些进程在每一时刻都打开了该文件。例如,在Linux上,您可以使用该实用程序


顺便说一下,如果您要从应用程序的单个实例多次打开同一个DB文件,您可能需要重新考虑您的体系结构—与传统的DB服务器相反,打开多个“连接”对单个SQLite DB文件的访问没有性能优势,如果不小心,甚至可能导致应用程序死锁。

您使用zentus SQLite JDBC吗?谢谢你的回复。但是我想知道如何使用sqlite3从命令提示符中查询连接数