【问题标题】:How to make a fresh database every time the application is started每次启动应用程序时如何创建一个新的数据库
【发布时间】:2014-03-09 17:33:48
【问题描述】:

我正在制作一个摇摆应用程序,其中用户输入一个文件 (.html),应用程序解析文件中的数据并解释为数据库。然后有一堆在数据库上运行的查询。 This question 告诉我需要在数据库上运行什么样的查询。

下面是怎么做的

我的问题如下 -

  1. 如何将空数据库嵌入到我的项目中,每次用户退出应用程序时都会清空该数据库?基本上我不希望用户必须单独安装数据库或设置连接和东西。

  2. 不将 html 文件解析到数据库中而是将其转换为不同的数据结构会更好吗?

  3. 由于对数据库的查询结果应该只是数字(我实际上不需要人名或票证#),我觉得不需要太多努力数据库部分。所以基本上我想创建一个单独的模块(可以这么说),它——从应用程序中获取文件——将 html 解析到数据库(或不同的数据结构)中——在运行适当的查询后提取数字——将这些数字提供给应用程序。这可行吗?

【问题讨论】:

    标签: java mysql database sqlite database-design


    【解决方案1】:

    问题 1

    您的应用中可能会有类似以下类的内容。只需覆盖startup() 方法并在此处执行您的干净逻辑。

    public class YourSwingApp extends SingleFrameApplication {
    /**
     * At startup clean the DB.
     */
    @Override
    protected void startup() {
        show(new YourSwingApp(this));
        // issue a set of 'truncate table' or 'delete from table' query here
        // you may want to create a Singleton to centralize the DB operation
    }
    }
    

    问题 2

    如果您在每次用户退出您的应用程序时丢弃数据,您可能根本不需要持久层。只需将数据模型保存在内存中就可以了。如果您想要比 DB 更轻量但持久的东西,您可能需要使用 Object Serialization

    问题 3

    “模块”这个词让我想到 OSGI 在这里它可能是一种矫枉过正。只需将项目分离到一个库中并创建一个接口来实现。这样,您的 GUI 就可以使用该界面来获取结果。

    【讨论】:

    • 您认为哪个数据库最适合我? MySQL?
    • 如果你想保持应用程序的轻量级,并避免依赖外部组件(即运行的 mysql 服务器),我认为 SQLite 是最好的选择。
    猜你喜欢
    • 2011-03-22
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多