我正在尝试从2D数组中将元素插入表中。 我在删除最后一个逗号以正确编写sql语句时遇到问题
这是代码
String m="";
String matInsert = null;
for (int k=0;k<di.mat.length;k++) { //row
for (int j=0;j<di.mat[k].length;j++) {
m+=di.mat[k][j]+", ";
matInsert=new String("INSERT INTO "+ tableName +"("+ff+")"+"values" +"("+m+")");
}
m = m.replaceAll(", $","");
//m=m.substring(0,m.lastIndexOf(","));
System.out.println(matInsert);
stmt1.executeUpdate(matInsert);
}
我非常努力,但我没有成功删除它
请帮忙。
答案 0 :(得分:2)
我通常对这类事物使用以下结构
String sep = "";
for(...) {
m += (sep+di.mat[k][j]);
sep = ",";
}
这不是最好的,但它有效。
现在,您的代码中的部分问题是您在循环内创建matInsert,然后在循环后更新m并且不重建它。
更新的代码:
String matInsert = null;
for (int k=0;k<di.mat.length;k++) { //row
String m="";
String sep = "";
for (int j=0;j<di.mat[k].length;j++) {
m+= (sep+di.mat[k][j]);
sep = " ,";
}
matInsert="INSERT INTO "+ tableName +"("+ff+")"+"values" +"("+m+")";
System.out.println(matInsert);
stmt1.executeUpdate(matInsert);
}
答案 1 :(得分:1)
您可以使用简单的逻辑来避免添加逗号。最好在现场省略不必要的东西,而不是用其他操作替换它。
for (int k=0;k<di.mat.length;k++) { //row
for (int j=0;j<di.mat[k].length;j++) {
m+=di.mat[k][j];
if(j<di.mat[k].length -1){ //This condition will escape you from last comma addition
m+= ", ";
}
}
}
另一点,使用StringBuilder#append
代替String
+
concat来提高效率。
答案 2 :(得分:0)
由于m是一个String,你可以使用m.substring(0,m.length() - 1)或者在内部循环中添加和if语句检查它是否是k和j的最后一个索引然后不要最后添加一个逗号。
答案 3 :(得分:0)
如果要删除字符串中字符的最后一个实例,如删除它,请使用:
public class Something
{
public static void main(String[] args)
{
String s = "test";
StringBuilder sb = new StringBuilder(s);
char delval = 'c';
int lastIndex = -1;
for(int i = 0; i < s.length()-1; i++)
{
if(s.charAt(i) == delval)
{
lastIndex = i;
}
}
try{
sb.deleteCharAt(lastIndex);
System.out.println(s);
}
catch(Exception e){
System.out.println("Value not present");
}
}
}