java - 在 For 循环中生成准备好的语句
问题描述
我有一个 SQL Server 表,其中使用循环生成的行数和列名。现在对于数据插入,我需要根据行数在 for 循环中生成 Prepared Statement。我的第一种方法是使用 Switch Case。
int numberOfRows;
PreparedStatement statement;
Object[] rowObjects;
switch (numberOfRows) {
case 1 -> {
statement.setString(1, String.valueOf(rowObjects[0]));
}
case 2 -> {
statement.setString(1, String.valueOf(rowObjects[0]));
statement.setString(2, String.valueOf(rowObjects[1]));
}
case 3 -> {
statement.setString(1, String.valueOf(rowObjects[0]));
statement.setString(2, String.valueOf(rowObjects[1]));
statement.setString(3, String.valueOf(rowObjects[2]));
}
}
statement.executeUpdate();
如您所见,它非常无效。还有比这更好的方法吗?
解决方案
你的 switch/case 语句可以写成这样。
for (int index = 0; index < numberOfRows; index++) {
statement.setString(index + 1, String.valueOf(rowObjects[index]);
}
推荐阅读
- django - 使用 apache2 部署 django 时加载数据时出错
- javascript - 嵌入式网站、Iframe 或 Ajax 中缺少信息?
- php - 如何在 Codeigniter PHP 中创建登录 API
- assembly - Solidity 组装错误:必须调用内置函数“gas”
- python - 解决python中纸浆库的功能:类型错误:必须是实数,而不是str
- php - 尝试从 html 表单更新 sql 表
- javascript - 不正确和正确的陈述
- javascript - Javascript - 无法读取 json 键值 - JSON 中位置 1 的意外令牌 i - sql 查询输出问题
- nodatime - 尝试使用 ZonedDateTimePattern 从字符串解析 ZonedDateTime 失败
- reactjs - 处理 useEffect 中的 fetch api 错误并设置错误