如何在Java中执行动态ps.setString()
我的代码有问题。我不知道如何在数据库中正确插入这些样本记录。它运行,但数据库中的输出错误。它在每列和每行中显示相同的值 这是我的密码:如何在Java中执行动态ps.setString(),java,sql,Java,Sql,我的代码有问题。我不知道如何在数据库中正确插入这些样本记录。它运行,但数据库中的输出错误。它在每列和每行中显示相同的值 这是我的密码: String[] arr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "010"}; pst = conn.prepareStatement(sql); conn = DriverManager.getConnection(url); String sql = "INSERT INTO in
String[] arr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "010"};
pst = conn.prepareStatement(sql);
conn = DriverManager.getConnection(url);
String sql = "INSERT INTO insertTable(POSTAL_CODE_NO_,VERTEX_CODES,STATE,COUNTY,CITY)
VALUES (?,?,?,?,?);";
pst = conn.prepareStatement(sql);
for (int i = 0; i < arr.length; i++) {
int index = 1;
for (int j = 1; j <= 5; j++) {
pst.setString(index, arr[i]);
index++;
}
pst.addBatch();
}
pst.executeBatch();
}
如果计划动态传递值,则可以在需要设置参数的位置使用“?” 例如,从emp_id=?'的员工中选择*可以在运行时用任何值替换 在您的场景中,将表插入到表中,表名称为col1、col2、col3值?、?、?从到问题: 我希望输出是Col1=1、col2=2、col3=3、col4=4、col5=5……而不是Col1=1、col2=1、col3=3等等 为此,需要在列索引每次增加时都增加数组索引变量。下面的代码已更改为执行此操作 代码也已更改为使用try with resources进行正确的资源管理 如果arr的长度不是列数的精确倍数,则代码当然会因ArrayIndexOutOfBoundsException而失败。在本例中,它是创建两行
String[] arr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "010"};
try (Connection conn = DriverManager.getConnection(url)) {
String sql = "INSERT INTO insertTable" +
" ( POSTAL_CODE_NO_, VERTEX_CODES, STATE, COUNTY, CITY )" +
" VALUES (?,?,?,?,?)";
try (PreparedStatement pst = conn.prepareStatement(sql)) {
for (int i = 0; i < arr.length; ) {
for (int col = 1; col <= 5; col++, i++) {
pst.setString(col, arr[i]);
}
pst.addBatch();
}
pst.executeBatch();
}
}
请注意i++如何被移动到第二个for循环。没有足够的代码来理解您的问题。对于您共享的和平,我的猜测是您需要在添加参数的FOR语句中执行数据库命令。你从不使用那个虚拟循环计数器。请向我们显示您试图执行的SQL查询。字符串SQL=插入insertTablePOSTAL_CODE_NO_,VERTEX_CODES,STATE,COUNTY,CITY Value?,?,?,?,?;;我需要用记录填充5列。当然,每列显示的值都相同,因为您正在为所有5列设置相同的值。OP正在使用?,否则pst.setString将失败。-现在,实际SQL被添加到问题中,这就更清楚了。