首页 文章

SQL Server行更新上的ExecuteScalar

提问于
浏览
1

我无法从SQL Server获取返回值,其中包含刚刚更新的行的ID .

我想获取我刚刚更新的行的id以用于以下查询,但是当我执行此方法时,第一个T-SQL语句更新行,但对象 activeRecord 没有得到返回的行号(没有值)

如果我直接在SQL中运行T-SQL语句,我会得到一个返回值 . 我在代码中的其他地方使用了 ExecuteScalar 而没有问题 .

我在这里错过了什么?

if (Regex.IsMatch(Encoding.ASCII.GetString(udpMessageReceived), "Valitating"))
{
   //a device is validating itself following endpoint registration
   string[] splitaction = Encoding.ASCII.GetString(udpMessageReceived).Split(deliminator);

   using (var conn = new SqlConnection(Globals.ConnectionString))
   {
       conn.Open();
       object activeRecord;

       using (var comm = new SqlCommand("UPDATE oView_MachineRegister SET validated= 1 where hostname= @hostname; SELECT ID = SCOPE_IDENTITY()", conn))
       {
           comm.Parameters.AddWithValue("datenow", DateTime.Now);
           comm.Parameters.AddWithValue("hostname", splitaction[1]);

           activeRecord = comm.ExecuteScalar();
       }

       using (var comm2 = new SqlCommand("DELETE from oView_OutBoundMessageQ WHERE machines = @activerecord AND command = 'Validate'", conn))
       {
           comm2.Parameters.AddWithValue("activerecord", activeRecord);
           comm2.ExecuteNonQuery();
       }

       conn.Close();
    }
}

1 回答

相关问题