我在mysql中用一列“Sno”创建了一个表。并在“Sno”栏中插入1到10个。我想根据Sno更新列值,但我无法做到。请帮我。谢谢。
这是我的代码。
int o=2,q=0;
ResultSet rs = st7.executeQuery("select * from table");
ResultSetMetaData metadata = rs.getMetaData();//here is columns are added dynamically,So that is metadata is needed.
BufferedReader br1 = new BufferedReader(new FileReader(f1));//here f1 is csv file path.
while ((line1 = br1.readLine()) != null) {
String[] splits = line1.split(",");//splitting line by ',' and storing into array.
n1 = splits.length;
for (m = 0; m < n1; m++) {
st8.executeUpdate("UPDATE table SET " + metadata.getColumnName(o) + "='" + splits[m] + "' WHERE Sno='"+q+"'");
o++;
}
q++;
out.println("<br>");
}
表格结构
+--------+--------+--------+--------+---------+-----------+
|Sno | col1 | col2 | col3 | col4 | col5 |
+--------+--------+--------+--------+---------+-----------+
| 0 | NULL | NULL | NULL | NULL | NULL |
+--------+--------+--------+--------+---------+-----------+
| 1 | NULL | NULL | NULL | NULL | NULL |
答案 0 :(得分:0)
使用
st8.executeUpdate("UPDATE `table` SET " + metadata.getColumnName(o) + "='" + splits[m] + "' WHERE Sno='"+q+"'");
因为表是保留字。
你可能还有其他问题,但这肯定会破坏它。
并且......你应该正确地参数化你的查询。由于单引号等输入,它也可能会中断。
答案 1 :(得分:0)
我认为查询应该是这个
“UPDATE table SET”+ metadata.getColumnName(o)+“=”+ splits [m] +“WHERE Sno =”+ q
只是双引号,没有单引号。
希望它有效