“从SQL Server CE获取@@ Identity时”解析查询时出错“

时间:2014-02-02 18:17:22

标签: c# sql .net sql-server sql-server-ce

我正在编写一个简单的桌面应用程序,我正在使用本地SQL数据库(SQL Server CE)。这是有问题的部分:

SqlCeConnection conn = new SqlCeConnection("Data Source=|DataDirectory|\\App_Data\\Rosters.sdf");
System.Data.SqlServerCe.SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = conn;

cmd.CommandText = String.Format("Insert into Teams (LeagueID, TeamName, Color) values ({0},'{1}','{2}');SELECT @@IDENTITY;", leagueID, txtTeamName.Text.Replace("'", "''"), txtColor.Text.Replace("'", "''"));
conn.Open();
int teamID = (int)cmd.ExecuteScalar();
conn.Close();

问题是我在拨打cmd.ExecuteScalar时遇到异常。

异常消息显示为

  

{“解析查询时出错。[令牌行号=   1,令牌行偏移= 97,令牌错误=选择]“}

我通过直接查询在完全相同的数据库中运行了完全相同的命令,运行正常 - 这让我觉得问题不在于SQL Server CE。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

SQL Server Compact仅支持每个命令一个语句,因此首先使用executenonquery运行insert语句,然后使用executioncalar获取标识,并记住不要关闭之间的连接