我正在尝试在请求上形成一个动态依赖的SQL
public class Main {
public static void main(String args[]) {
String reqstr = "popcorn@Bucket";
String values[] = reqstr.split("@");
StringBuffer sqlquery = new StringBuffer(
"insert into category_dev (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) values (");
for (int i = 0; i < values.length; i++) {
sqlquery.append("'" + values[i] + "'");
sqlquery.append(",");
}
if (sqlquery.length() > 0) {
sqlquery.setLength(sqlquery.length() - 1);
}
sqlquery.append(")");
System.out.println(sqlquery);
}
}
该表已从T1,T2,T3 ------ T10获得固定列。
每个@符号表示表的列值
当我运行上述程序时,正在形成的输出是
insert into category_dev (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) values ('popcorn','Bucket')
如何用NULL填充其他值?例如
insert into category_dev (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) values ('popcorn','Bucket' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL)
答案 0 :(得分:1)
这是一个非常糟糕的主意,请阅读一些关于sql注入的内容
改为使用PreparedStatements:
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
例如,应该适用于任何类型的查询或表操作
进行查询:
pstmt.set<whatever>// for the ones you want to actually set and
pstmt.setNull // in a loop for whichever didnt use
答案 1 :(得分:1)
Aren你只是在寻找这样的东西吗?
for (int i = 0; i < 10; i++) {
if (i > values.length()) {
sqlquery.append("NULL");
sqlquery.append(",");
}else {
sqlquery.append("'" + values[i] + "'");
sqlquery.append(",");
}
}
我同意另一个答案。你应该看看准备好的陈述。