有人可以通过以下查询告诉我这个问题吗?我正在运行MS Access及其提供
查询表达式'id = @@ IDENTITY'
中的语法错误
代码:
public DosageBO SaveDosage(DosageBO dosage)
{
try
{
using (IDbConnection connection = OpenConnection())
{
StringBuilder sql = new StringBuilder();
sql.AppendLine("INSERT INTO dosage_master ( medicine_type, dosage, remarks, updateby, updatedate )");
sql.AppendLine("VALUES (@type, @dose, @remarks, @updateby, NOW());");
var parameters = new
{
type = dosage.MedicineType,
dose = dosage.Dosage,
remarks = dosage.Remarks,
updateby = Environment.UserName
};
connection.Execute(sql.ToString(), parameters);
return connection.Query<DosageBO>("SELECT medicine_type as MedicineType, dosage, remarks FROM dosage_master WHERE id = @@IDENTITY").FirstOrDefault();
}
}
catch
{
throw;
}
}
答案 0 :(得分:1)
SELECT @@Identity
是一个专门的查询。并且@@Identity
仅在该上下文中有效。如果您尝试在其他地方使用@@Identity
,如在WHERE
子句中,则db引擎将抛出错误。
您必须从SELECT @@Identity
检索值,保存它,然后在其他查询中使用该保存的值。
答案 1 :(得分:0)
删除最后的)
WHERE id = @@IDENTITY)
^---here
答案 2 :(得分:0)
您是否在选择查询之前在此批次中插入了一行? 据我所知,@@ IDENTITY只有在插入行后才能直接生成,从而生成一个标识值,即插入到自动增量标识列。
再次编辑:
尝试将其括在子查询中,例如id = (SELECT @@IDENTITY)