Java中的字符串
我有一个密码:Java中的字符串,java,Java,我有一个密码: for(int i=0;i<fList.size();i++){ String targets=""; String values=""; String sql="INSERT INTO "+tableName+"("+targets+") VALUES("+values+")"; Map<Column, String> attrs=fList.get(i).getAttributes(); for(int j=0;j&l
for(int i=0;i<fList.size();i++){
String targets="";
String values="";
String sql="INSERT INTO "+tableName+"("+targets+") VALUES("+values+")";
Map<Column, String> attrs=fList.get(i).getAttributes();
for(int j=0;j<columns.size();j++){
if(columns.get(j).getName().equalsIgnoreCase("kadnum")){
targets=targets+"kadnum,";
System.out.println("targets:"+targets);
values=values+attrs.get(columns.get(j))+",";
System.out.println("values:"+values);
}
if(columns.get(j).getName().equalsIgnoreCase("support_num")){
targets=targets+"support_num";
values=values+attrs.get(columns.get(j))+",";
}
}
System.out.println("sql="+sql);
}
但是如果您更改System.out.println(“sql=“+sql”)代码>至系统输出打印项次(“目标=”+目标)代码>我得到:targets=kadnum,
为什么字符串sql不更改?将sql声明移动到刚好在println
之前结束
String sql="INSERT INTO "+tableName+"("+targets+") VALUES("+values+")";
System.out.println("sql="+sql);
应该就在上面
System.out.println("sql="+sql);
在将任何内容添加到目标
字符串之前,您正在创建sql
字符串。因此,在创建sql
字符串时,targets
字符串仍然为空。稍后在结尾处创建sql
字符串来解决这个问题。所以我只在我想使用它的时候才使用sql
吗?是的。此外,在多线程应用程序中,当用Java表示字符串时,建议使用StringBuilder
或StringBuffer
。@KliverMax,只有当其他变量目标
和值
准备就绪或者我应该说已使用所需值初始化时,才需要构造sql
。您存在sql注入漏洞。切勿这样做。使用框架连接到数据库
String sql="INSERT INTO "+tableName+"("+targets+") VALUES("+values+")";
System.out.println("sql="+sql);