Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的字符串_Java - Fatal编程技术网

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);