任何人都可以告诉我为什么我收到以下语法的以下错误?感谢。
java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序] UPDATE语句中的语法错误。
stmt = conn.prepareStatement("UPDATE STAFFDIR " +
"SET Last_Name = ?, " +
"SET First_Name = ?, " +
"SET Phone = ?, " +
"SET Dept_Code = ?, " +
"SET Email = ?, " +
"SET Title = ?, " +
"SET Loc_Code = ? " +
"WHERE ID = ?;");
stmt.setString(1, ID);
stmt.setString(2, Last_Name);
stmt.setString(3, First_Name);
stmt.setString(4, Phone);
stmt.setString(5, Dept_Code);
stmt.setString(6, Email);
stmt.setString(7, Title);
stmt.setString(8, Loc_Code);
stmt.executeUpdate();
答案 0 :(得分:1)
无论设置了多少字段,Sql中的更新语句只需要一个SET
,即
UPDATE STAFFDIR SET Last_Name = ?,
First_Name = ?, -- No extra set
Phone = ?, ...
顺便说一下,您使用的是正确的驱动程序(MS Access vs Sql Server)吗?
答案 1 :(得分:0)
应该只有一个SET。请按以下步骤进行操作
stmt = conn.prepareStatement("UPDATE STAFFDIR " +
"SET Last_Name = ?, " +
"First_Name = ?, " +
"Phone = ?, " +
"Dept_Code = ?, " +
"Email = ?, " +
"Title = ?, " +
"Loc_Code = ? " +
"WHERE ID = ?;");
答案 2 :(得分:0)
您的查询只需要一个SET 和,您将以错误的顺序绑定参数 -
stmt = conn.prepareStatement("UPDATE STAFFDIR " +
"SET Last_Name = ?, First_Name = ?, Phone = ?, " +
"Dept_Code = ?, Email = ?, Title = ?, Loc_Code = ? " +
"WHERE ID = ?");
int i = 1;
// stmt.setString(1, ID);
stmt.setString(i++, Last_Name);
stmt.setString(i++, First_Name);
stmt.setString(i++, Phone);
stmt.setString(i++, Dept_Code);
stmt.setString(i++, Email);
stmt.setString(i++, Title);
stmt.setString(i++, Loc_Code);
stmt.setString(i++, ID); // <-- the 8th field.
另外值得注意的是Java 8删除了ODBC-JDBC桥接器,因此您可能需要考虑寻找一种连接到DataSource的替代方法。