- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的项目有一个 C++ dll,其中一个数据库是在 Sqllite 中创建的,共享拒绝 = 无。这个 dll 会将数据插入 Db,我有一个 C# .exe,它必须访问 db 并显示它。显示需要异步完成。在启动与 sqlitedb 的连接时有什么方法可以锁定表或数据库?如果可能的话,任何人都可以给我链接或关于如何完成的示例吗?提前致谢。
最佳答案
查看 SQLite pragma-s。 http://www.sqlite.org/pragma.html
PRAGMA locking_mode;
PRAGMA 锁定模式 = 正常 |独家
此 pragma 设置或查询数据库连接锁定模式。锁定模式是 NORMAL 或 EXCLUSIVE。
在 NORMAL 锁定模式(默认)下,数据库连接会在每次读取或写入事务结束时解锁数据库文件。当锁定模式设置为 EXCLUSIVE 时,数据库连接永远不会释放文件锁。第一次以 EXCLUSIVE 模式读取数据库时,会获取并持有一个共享锁。第一次写入数据库时,获取并持有独占锁。
通过关闭数据库连接,或使用此 pragma 将锁定模式设置回 NORMAL,然后访问数据库文件(用于读或写),可以释放在 EXCLUSIVE 模式下连接获得的数据库锁。简单地将锁定模式设置为 NORMAL 是不够的 - 直到下一次访问数据库文件时才会释放锁。
将锁定模式设置为独占有两个原因。一种是应用程序是否真的想阻止其他进程访问数据库文件。另一个是在这种模式下启用的优化可以节省少量文件系统操作。这在嵌入式环境中可能很重要。
当 locking_mode pragma 指定特定数据库时,例如:
PRAGMA main.locking_mode=EXCLUSIVE;然后锁定模式仅适用于指定的数据库。如果在“locking_mode”关键字之前没有数据库名称限定符,则锁定模式将应用于所有数据库,包括由后续 ATTACH 命令添加的任何新数据库。
“临时”数据库(其中存储了 TEMP 表和索引)和内存数据库始终使用独占锁定模式。无法更改临时数据库和内存数据库的锁定模式。所有其他数据库默认使用普通锁定模式并受此编译指示影响。
PRAGMA同步;
杂注同步 = 0 |关 | 1 |正常 | 2 |已满;
查询或更改“同步”标志的设置。第一个(查询)表单将以整数形式返回同步设置。当synchronous为FULL(2)时,SQLite数据库引擎会在关键时刻暂停,以确保数据确实已经写入磁盘表面,然后再继续。这确保如果操作系统崩溃或出现电源故障,数据库在重新启动后不会损坏。 FULL 同步非常安全,但速度也较慢。当 synchronous 为 NORMAL (1) 时,SQLite 数据库引擎仍会在最关键的时刻暂停,但频率低于 FULL 模式。在正常模式下,在错误的时间发生电源故障可能会损坏数据库的可能性非常小(尽管非零)。但实际上,您更有可能遭受灾难性磁盘故障或其他一些不可恢复的硬件故障。使用同步 OFF (0),SQLite 在将数据移交给操作系统后立即继续而不会暂停。如果运行 SQLite 的应用程序崩溃,数据将是安全的,但如果操作系统崩溃或计算机在数据写入磁盘表面之前断电,数据库可能会损坏。另一方面,在同步关闭的情况下,某些操作的速度提高了 50 倍或更多。
默认设置是 synchronous=FULL。
关于c# - 锁定 SQLite 数据库以从 C# 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2286772/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!