Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过C获取SQL中最后更新的行的标识#_C#_Sql Server Ce_Identity - Fatal编程技术网

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

C# 通过C获取SQL中最后更新的行的标识#,c#,sql-server-ce,identity,C#,Sql Server Ce,Identity,我试图首先通过C#在SQL Compact Edition数据库中创建新行,然后用单选按钮中的信息更新同一行。我在数据库中有一个自动递增的“ID”列 因此,我尝试使用@@Identity将其值赋给一个变量,并在更新查询中调用它,但它不起作用。我已尝试在ID列中查找最大值,该列将是最新的一行,但仍然无法工作。这是我的密码 con.Open(); string sqlAdd = "Insert into MembersTable ([First Name],Surname,[Middle Name]

我试图首先通过C#在SQL Compact Edition数据库中创建新行,然后用单选按钮中的信息更新同一行。我在数据库中有一个自动递增的“ID”列

因此,我尝试使用@@Identity将其值赋给一个变量,并在更新查询中调用它,但它不起作用。我已尝试在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();
       }
      }

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

多亏了@Soner,我用了:

int.TryParse(dr1["TempID"].ToString(), out Identity); 
string IdentityS = Identity.ToString();
并将DC.ID替换为IdentityS


现在它工作得很好。

您是否调试了代码并检查了程序是否使用了if语句?你也应该经常使用。这种类型的字符串连接对攻击是开放的。还可以使用
using
语句来处理数据库连接和命令。确实如此。但是上面写着“updatememberstable set-Gender='M'where-ID='0'”,所以呢?您的
ID
列是否为字符类型?为什么?看起来应该是数字类型的。执行更新查询时,您是否收到任何错误或异常消息?ID列为Int。我没有收到任何错误。如果
ID
列为
Int
,则不需要对其使用单引号。单引号用于字符。但在这种情况下,它应该抛出错误,这意味着您的
if
语句不起作用。