首页 > 解决方案 > 在 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();
                                            

如您所见,它非常无效。还有比这更好的方法吗?

标签: javaswitch-statementprepared-statement

解决方案


你的 switch/case 语句可以写成这样。

for (int index = 0; index < numberOfRows; index++) {
    statement.setString(index + 1, String.valueOf(rowObjects[index]);
} 

推荐阅读