gpt4 book ai didi

java - 如何使用 Java 在数据库中插入值,其中要插入的参数数量可能会有所不同

转载 作者:行者123 更新时间:2023-11-30 03:32:22 25 4
gpt4 key购买 nike

我正在创建一个函数,用户需要提供表名和存储值的 json 文件的路径,它将被插入到数据库中: insertData(String tablename, String jsonFilePath )

现在,如果我事先知道要插入的值的数量是多少,那么创建一个像这样的PreparedStatement就会很容易:

String strQuery = "INSERT INTO tablename VALUES (?, ?)";
PreparedStatement stmt = conn.prepareStatement(strQuery);//prepare the SQL Query
stmt.setString(1, "abc");//insert homeid
stmt.setInt(2, "def");//insert featureid.
stmt.executeQuery();//execute query

但是由于我事先不知道表名是什么,并且每个表的列数可能会有所不同,所以我该如何继续它,因为我需要提前创建 SQL 查询字符串“strQuery”需要输入?

最佳答案

由于插入语句的结构可能会发生变化,因此可以动态生成语句。如果您不打算重用准备好的语句,那么使用它就没有真正的好处。以下是使用语句(而不是准备好的语句)动态生成语句的示例:

public boolean insert(Connection conn, String table, List<String> columns, List<String> values) throws SQLException {
StringBuilder sb = new StringBuilder();

sb.append("INSERT INTO ");
sb.append(table);
sb.append(" (");

// add columns
Iterator<String> it = columns.iterator();
sb.append(it.next());
while(it.hasNext()) {
sb.append(',');
sb.append(it.next());
}

sb.append(") VALUES (");

// add values
it = values.iterator();
sb.append(it.next());
while(it.hasNext()) {
sb.append(',');
sb.append(it.next());
}

sb.append(");");

// insert
try (Statement stmt = conn.createStatement()) {
return stmt.execute(sb.toString());
}
}

请注意,此代码未执行正确的验证。例如,如果两个列表中的任何一个为空,就会发生错误。

关于java - 如何使用 Java 在数据库中插入值,其中要插入的参数数量可能会有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724143/

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