gpt4 book ai didi

java - 使用 java 列表填充 phpMyAdmin 表

转载 作者:行者123 更新时间:2023-11-30 00:42:24 25 4
gpt4 key购买 nike

由于java代码,我正在尝试用phpMyAdmin中的数据填充表。我面临着用字符串列表填充我的一列的问题。这是我的代码:

for(Wallpaper w : wallpapersList){                
if(w != null){

id = w.getId();
preview = w.getPreviewScreen();
fullscreen = w.getFullScreen();
size = w.getSize();
tagsList = w.getTags();
}
String insertQuery = " insert into wallpapers (id, preview, fullscreen, size, tags)"
+ " values (?, ?, ?, ?, ?)";

preparedStmt = conn.prepareStatement(insertQuery);
preparedStmt.setString (1, id);
preparedStmt.setString (2, preview);
preparedStmt.setString (3, fullscreen);
preparedStmt.setString (4, size);
if(!tagsList.isEmpty()){
for(String tag : tagsList){
preparedStmt.setString (5, tag);
}
}

// execute the preparedstatement
preparedStmt.execute();

所以这里我有一个字符串列表,其中的“tagsList”为空时返回“无标签”,没关系,这个值可以在我的表中设置,有时“tagsList”可以包含一个或多个项目,但是当我尝试为一个 SQL 插入查询插入多个项目,这要归功于我的循环“for”,仅插入了最后一个项目。

我的问题是如何在列中插入一次插入的字符串列表?

在phpMyAdmin中,在我的表中,字段标签是VARCHAR,我不知道它是否是错误的类型?或者也许是我的循环“for”不适合这项工作。我看到了 .setArray(..) 而不是 .setString(..),也许我必须得到这个?但我想知道是否可以使用简单的字符串列表来管理这种情况。

谢谢。

最佳答案

数据库不在字段中存储数组或列表,它们只是每行存储奇异值,并且有多行存储多个值。

至少有三种方法可以解决这个问题:

  1. 为标签创建一个新表,并在壁纸表和标签表之间建立多对多关系。这将是使用数据库实现其设计目的来解决问题的优雅方法。
  2. 将标签列为单个字符串,并使用分隔符分隔不同的项目(例如“tag1,tag2,tag3,tag4”)。这将是一种懒惰且丑陋的解决方法。
  3. 序列化您的数据结构并将其作为二进制数据保存在数据库中。不过,这对于字符串列表来说有点过分了。

就我个人而言,我选择了 1,因为这将允许您直接从数据库中按标签搜索壁纸并利用其优势。但如果您无法更改表设计,那么您将不得不使用 2 或 3 并取消代码中的所有逻辑。

关于java - 使用 java 列表填充 phpMyAdmin 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com