C# 通过C获取SQL中最后更新的行的标识#
我试图首先通过C#在SQL Compact Edition数据库中创建新行,然后用单选按钮中的信息更新同一行。我在数据库中有一个自动递增的“ID”列 因此,我尝试使用@@Identity将其值赋给一个变量,并在更新查询中调用它,但它不起作用。我已尝试在ID列中查找最大值,该列将是最新的一行,但仍然无法工作。这是我的密码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]
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
语句不起作用。