1

誰かが以下のクエリの問題を教えてもらえますか? 私は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;
   }
}
4

3 に答える 3

0

選択クエリの前に、このバッチに行を挿入していますか? 私の知る限り、 @@IDENTITY は行を挿入した直後にのみ利用可能で、ID 値が生成されます。つまり、自動インクリメンタル ID 列への挿入です。

もう一度編集: サブクエリで囲んでみてください。id = (SELECT @@IDENTITY)

于 2013-11-09T14:23:47.870 に答える