通过C#获取SQL中最后更新的行的标识

时间:2015-03-02 14:48:51

标签: c# sql-server-ce identity

我试图首先通过C#在我的SQL Compact Edition数据库中创建一个新行,然后我想用我的radiobuttons中的信息更新同一行。我有一个" ID"数据库中的列是自动增量的。

所以我尝试使用@@ Identity将其值赋给变量,并在更新查询中调用它,但它不起作用。我已经尝试过MAX来查找ID列中的最大值,这将是最新一行,但它仍然没有用。这是我的代码。

con.Open();
string sqlAdd = "Insert into MembersTable ([First Name],Surname,[Middle Name])
Values('"+txtFirstName.Text+"','"+txtSurname.Text+"','"+ txtMiddleName.Text+"')";
string IDIdentifier = "Select @@Identity AS TempID";
string sqlgenderM = "Update MembersTable set Gender='M' where ID='" + DC.ID + "'";
string sqlgenderF = "Update MembersTable set Gender='F' where ID='" + DC.ID + "'";

com = new SqlCeCommand(sqlAdd, con);
com.ExecuteNonQuery();

SqlCeCommand com1 = new SqlCeCommand(IDIdentifier, con);
SqlCeDataReader dr1 = com1.ExecuteReader();
if (dr1.Read())
    {
        DC.ID = dr1["TempID"].ToString();
    }
    {
        if (rbGenderMale.Checked == true)
      {
      SqlCeCommand gendercom = new SqlCeCommand(sqlgenderM, con);
      gendercom.ExecuteNonQuery();
      }

       else if (rbGenderFemale.Checked == true)
       {
       SqlCeCommand gendercom = new SqlCeCommand(sqlgenderF, con);
       gendercom.ExecuteNonQuery();
       }
      }

字段(名字,中间名,姓氏)会更新,但性别列不会更新。我做错了什么?

1 个答案:

答案 0 :(得分:0)

感谢我使用的@Soner:

int.TryParse(dr1["TempID"].ToString(), out Identity); 
string IdentityS = Identity.ToString();

并将 DC.ID 替换为 IdentityS

现在它完美无缺。