public static void updatePersonInfo(int number, string password,string firstname, string lastname, string address, string city, string province, string postal, int typeid,bool suspend)
{
SqlCeConnection sqlConn = null;
SqlCeCommand cmdUpdate;
int susBit = 0;
if (suspend == true)
{
susBit = 1;
}
try
{
sqlConn = new SqlCeConnection(databaseString);
sqlConn.Open();
cmdUpdate = new SqlCeCommand(@"UPDATE PersonInfo
SET First_Name = @fname, Last_Name =@lname, Address = @address,
City = @city, Province = @prov, Postal_Code = @post, Type = @type,
Password = @pass, Suspended = @susp
WHERE Number = @numb", sqlConn);
cmdUpdate.Parameters.Add(new SqlCeParameter("@numb", SqlDbType.Int)).Value = number;
cmdUpdate.Parameters.Add(new SqlCeParameter("@fname", SqlDbType.NVarChar)).Value = firstname;
cmdUpdate.Parameters.Add(new SqlCeParameter("@lname", SqlDbType.NVarChar)).Value = lastname;
cmdUpdate.Parameters.Add(new SqlCeParameter("@address", SqlDbType.NVarChar)).Value = address;
cmdUpdate.Parameters.Add(new SqlCeParameter("@city", SqlDbType.NVarChar)).Value = city;
cmdUpdate.Parameters.Add(new SqlCeParameter("@prov", SqlDbType.NVarChar)).Value = province;
cmdUpdate.Parameters.Add(new SqlCeParameter("@post", SqlDbType.NVarChar)).Value = postal;
cmdUpdate.Parameters.Add(new SqlCeParameter("@type", SqlDbType.Int)).Value = typeid;
cmdUpdate.Parameters.Add(new SqlCeParameter("@pass", SqlDbType.NVarChar)).Value = password;
cmdUpdate.Parameters.Add(new SqlCeParameter("@susp", SqlDbType.Bit)).Value = susBit;
cmdUpdate.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
if (sqlConn != null)
{
sqlConn.Close();
}
}
}
答案 0 :(得分:2)
我无法发现方法中的任何错误。
我接下来要检查的可能原因:
number
值与现有记录不对应。注意:位字段对应于布尔值,因此您不必从布尔值创建数值,您可以直接将其用作值:
cmdUpdate.Parameters.Add(new SqlCeParameter("@susp", SqlDbType.Bit)).Value = suspend;
答案 1 :(得分:0)
六个月后,但我刚刚发现了另一次搜索。
您需要为nVarChar数据字段指定大小。
使用您的代码,我将所有nVarChar
SqlDbTypes 设置为50
....
cmdUpdate.Parameters.Add(new SqlCeParameter("@numb", SqlDbType.Int)).Value = number;
cmdUpdate.Parameters.Add(new SqlCeParameter("@fname", SqlDbType.NVarChar, 50)).Value = firstname;
cmdUpdate.Parameters.Add(new SqlCeParameter("@lname", SqlDbType.NVarChar, 50)).Value = lastname;
cmdUpdate.Parameters.Add(new SqlCeParameter("@address", SqlDbType.NVarChar, 50)).Value = address;
cmdUpdate.Parameters.Add(new SqlCeParameter("@city", SqlDbType.NVarChar, 50)).Value = city;
cmdUpdate.Parameters.Add(new SqlCeParameter("@prov", SqlDbType.NVarChar, 50)).Value = province;
cmdUpdate.Parameters.Add(new SqlCeParameter("@post", SqlDbType.NVarChar, 50)).Value = postal;
cmdUpdate.Parameters.Add(new SqlCeParameter("@type", SqlDbType.Int)).Value = typeid;
cmdUpdate.Parameters.Add(new SqlCeParameter("@pass", SqlDbType.NVarChar, 50)).Value = password;
cmdUpdate.Parameters.Add(new SqlCeParameter("@susp", SqlDbType.Bit)).Value = susBit;
cmdUpdate.ExecuteNonQuery();
我希望你已经解决了这个问题。
本说明适用于以这种方式发生的所有其他人。