java - 使用sqlite数据库

标签 java database swing sqlite client

我正在开发一个用户可以在线和离线的应用程序。我希望用户输入的数据与中央数据库同步。

该应用程序位于 Swing 中,并使用 Web 服务更新中央数据库中的数据。

我认为 SQLite 作为一种解决方案,但我担心安全性。每个客户端系统中的关注点都会有多个用户,每个用户都会有他的特定数据。 SQLite 支持这个吗?

在这种情况下,SQLite 还有其他替代方案吗?

我使用 Oracle 10g 作为我的中央数据库。 SQLite的作用是一个本地DB,存储数据直到用户上线

编辑::我在这里担心 SQLite 文件的安全性。通过我的初步分析,我发现访问 sqlite 文件时没有身份验证之类的功能。 希望我现在清楚了。

最佳答案

SQLite 不支持每用户身份验证(您可以使用密码,但对于整个数据库文件来说是相同的)。无论如何,每用户身份验证都不会有效,因为对数据库文件具有读取访问权限的用户只能直接读取该文件。您可以加密数据,但必须将解密 key 和算法存储在用户可以访问的可执行文件中。

当您想要保护每个用户的本地数据时,我建议将此责任委托(delegate)给操作系统。只需在当前用户的私有(private)用户目录中为每个用户存储一个单独的数据库文件(Windows 上为 %appdata%,unix 上为 ~/)。只要用户没有 admin/root 权限,操作系统就应该阻止他们访问彼此用户目录中的数据。

当然,只有当应用程序的每个用户在操作系统上都有一个单独的帐户时,这才有效。如果不是这种情况,您仍然可以对存储在公共(public)位置的每个用户使用单独的数据库,但使用从每个用户的密码派生的 key 对每个数据库文件进行加密。

关于java - 使用sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258871/

相关文章:

java.awt.color 返回颜色名称而不是 RGB 值

c# - 编译器错误消息 : CS1519: Invalid token '=' in class, 结构或接口(interface)成员声明

java - 为什么粗体 + 斜体不起作用?

Java jTable 排序百分比值不起作用

java - Swing 标签与文本字段未对齐

java - <T extends SomeClass> 未返回 T 类型的对象。找不到适合我的解决方案

java - 边界填充(洪水填充)算法构建交互式 map 。 java

Java 邮件 - 附件和内联图像

php无法接收Android使用HttpURLConnection发送的数据

mysql - MySQL 中可以同时有超过 1 个 sql_mode 吗?