java - 寻找存储文件名的正确解决方案

标签 java mysql database

刚开始我的爱好项目,现在我来这里是为了获得有关进行正确的数据库设计/查询的帮助。我制作了一个简单的 Java 程序,它循环遍历文件夹的内容。我想将此内容保存到 MySQL 数据库,所以我在 Java 中添加了一个连接器到我的数据库,在 MySQL 中创建了一个表和列"file"、“路径”和“id”、“日期”。

所以现在重要/有趣的事情是,每次我想用 Java 将文件名添加到 MySQL 时,我都会这样做(当按下 GUI 按钮时,我会调用执行此操作的方法):

  1. 删除具有相同文件路径的所有条目 - 这是为了确保我将获得与路径中的内容完全相同的新条目。
  2. Java 循环:将文件信息插入到列 id、路径、文件名和文件添加到数据库的日期。

通过这种方式,我始终可以确保将要添加到数据库中的文件名始终是最新的,无论我重命名还是删除文件,它都会是最新的,因为表将删除它的条目并写入新信息。旧信息 -> 删除旧信息 - 插入新信息 -> 最新信息。

我知道这可能不是最好的解决方案,但它确实有效,但现在我被困在了下一步我想做的事情上。我想添加文件的差异以了解在两次插入之间添加和删除了哪些文件,这是我的问题,因为条目在我无法比较的新插入之前被删除。您将如何更改设计或解决方案?欢迎所有想法,因为我很新鲜,如果你能告诉我查询的样子,我将不胜感激。

最佳答案

不要先删除所有行。只删除那些被删除的(或者更好的是,只需按照我在下面的建议将它们标记为“不活动”)。首先查询您的数据库,看看上次那里有什么。

我会在您的表中保留名为“非 Activity ”的附加列。默认情况下为 FALSE,对于已删除的文件为 TRUE。请记住,由于您的文件是通过file+path+id唯一标识的,因此重命名任何文件确实是一种删除旧文件并创建新文件的操作。

从数据库中删除内容不是一个好主意,因为您可能总是会意外删除某些内容(代码中的错误)并且无法取回数据。

另外要做的是将散列添加到您的表中。这样您就可以检查文件是否真的被更改了。没有必要将文件重新添加到数据库中,因为它没有改变。参见 Getting a File's MD5 Checksum in Java了解更多信息。

关于java - 寻找存储文件名的正确解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42891971/

相关文章:

django - 将用户从数据库迁移到 Django 上的另一个数据库

java - 有没有办法将 web-inf/lib 类路径添加到耳朵中的独立 jar 中?

java - 访问另一个类中的公共(public)最终常量?

Java-如何通过 GUI 获取数字数组

javascript - 查询联结表而不在 Sequelize 中获取两个关联

database - 从 AWS Lambda 函数连接 Azure 云中托管的数据库

database - 如何在同一数据库中的 VBA 代码中从 MS ACCESS 中提取字段

java - 使用 MySQL 中的数据填充 JComboBox

java - 如何在非主键上使用 hibernate 注释设置单向一对一关系?

mysql - 我们的 MySQL 数据库应该与我们的 Apache 服务器分开吗?