小编典典

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

sql

我正在编写一个简单的桌面应用程序,其中使用了本地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,令牌有误= SELECT]”}

我已经通过直接查询在完全相同的数据库中运行了完全相同的命令,并且运行良好-这使我认为问题不在于SQL Server CE。

任何帮助将不胜感激。


阅读 141

收藏
2021-04-14

共1个答案

小编典典

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

2021-04-14