【问题标题】:Update query giving exception in Java using SQL Server使用 SQL Server 在 Java 中更新查询给出异常
【发布时间】:2013-03-13 10:28:39
【问题描述】:
PreparedStatement update = con.prepareStatement(
    "UPDATE employee SET FirstName = ?, LastName = ?, HighestDegreeEarned = ?, JoiningDate = ?, CurrentPost = ?, DeparmentID = ?, ContactNo(Mobile) = ?, ContactNo(Home) = ?, CurrentAddress = ?, PermanentAddress = ? WHERE ID =  ?");

update.setString(1, firstnametxt.getText());
update.setString(2, lastnametxt.getText());
update.setString(3, degreetxt.getText());
update.setString(4, joiningdatetxt.getText());
update.setString(5, currentposttxt.getText());
update.setString(6, departmentidtxt.getText());
update.setString(7, mobiletxt.getText());
update.setString(8, contactnotxt.getText());
update.setString(9, currentaddresstxt.getText());
update.setString(10, permanentaddresstxt.getText());
update.setString(11, empidtxt.getText());

update.executeUpdate();

这是代码,在执行时我收到以下错误。 SQL 异常:java.sql.SQLException:[Microsoft][ODBC SQL Server Driver][SQL Server]')' 附近的语法不正确。请帮助我

【问题讨论】:

  • 语句ContactNo(Mobile)ContactNo(Home) 在SQL Server 中是否可接受?看起来就像司机抱怨的那样。
  • @Filipe Fedalto:你应该把它写成答案......

标签: java sql-server-2008


【解决方案1】:

无法命名数据库中的列:ContactNo(Mobile) 或 ContactNo(Home)

如果ContactNo()是一个函数,使用动态sql调用。

【讨论】:

  • 实际上,您可以使用 ContantNo(Mobile) 作为 MSSQL 中的列名,但必须将此类名称视为分隔标识符(带引号或括号)。例如对于括号标识符 - 用方括号括起来 - [ContactNo(Mobile)]。 msdn.microsoft.com/en-us/library/aa224033%28v=sql.80%29.aspx 但是在大多数情况下,这种命名是相当不鼓励的。
【解决方案2】:

失败可能有两个原因

  1. SQL Server 中的 ContactNo 函数未退出或未编译
  2. JoiningDate 格式不正确

【讨论】:

  • Ad 1) 它不能是函数...函数不能在集合中(在更新语句中)用作列名(仅在动态 sql 中它是可能的) Ad 2)它可以' t 是日期格式,因为错误是:“')' 附近的语法不正确。”
猜你喜欢
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多