有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是SQLite最适合用于嵌入式数据库的东西吗?

我需要构建一个Java应用程序,安装在Linux服务器上

当人们安装时,他们只需要安装这个应用程序,启动它,什么都不用做。但我们有一些数据要保存

  • 我对MySQL说不,因为它需要一个服务器
  • 我对XML说不,因为会有很多数据需要保存和处理

所以我在看SQLite,这是我认为最好的。的确(如果我错了,请阻止我),SQLite不需要任何服务器吗?(只需安装最终应用程序,SQLite就可以在我的应用程序中正常工作?)

然后我在http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers查看了一下,我真的有点困惑

  • 包装器和驱动程序之间有什么区别
  • 此外,我还看到了一个“纯java实现”:SQLJet是否进行了或多或少的优化
  • 最后,在我的情况下,你会用什么

共 (2) 个答案

  1. # 1 楼答案

    要考虑的另一个数据库是H2。它是一个完全用Java编写的嵌入式数据库引擎,因此您可以获得Sqlite所不具备的完整unicode(16位)字符支持。其他嵌入式数据库是HSQLDBDerby

    sqlite doesnt need any requirement on the server ?

    对。事实并非如此。H2也没有

    just install the final application and sqlite works fine in my application ?

    对。只要在WAR中包含Sqlite或H2(或将其解包到jar中),它就可以正常工作

    What is the difference between a Wrapper and a Driver ?

    取决于用法。我认为Sqlite指的是,当您为Sqlite使用JDBC驱动程序时,它实际上是驱动程序中Sqlite C本机库的包装。通常,JDBC驱动程序会与远程数据库通信

    H2也是这样,因为“驱动程序”实际上是用Java编写的数据库操作,所以不需要C包装器

    Plus I see there exists a "pure java implementation" : SQLJet is it more or less optimized?

    这是我第一次听说Sqljet,所以我不确定。我用的是Xerial Sqlite driver,它的性能似乎很好

    Finally what would you use in my situation?

    我会自己使用H2来实现本机Java功能

  2. # 2 楼答案

    1. 是的,SQLite不需要服务器

    2. 一个非常简单的开发解决方案是使用SQLLite,将其嵌入到源代码中,并使用少量存根数据。然后,您可以将数据库作为单个文件提交到版本控制系统(即,我使用github,它非常容易做到这一点)。显然,这不是一种好的生产方法,但它是创建单一开发版本的好方法

    3. 包装器是一个程序,它通过允许您通过不同的接口访问另一个程序的功能,从而将另一个程序包装起来。例如,eclipse将我们在日常开发中使用的许多java程序“包装”在一个方便的GUI中。而驱动程序是启动现有应用程序所需的程序。例如,在java应用程序中,我们可能有一个可以被认为是应用程序入口点驱动程序的主类