我正在使用C#编写数据库并在数据库中搜索没问题,我在搜索时得到了正确的信息。 如果我想用新的Tigers更新我的数据库(例如),它会更新。我自己无法看到代码的任何问题,我没有得到任何错误。 问题出在哪里? 这是代码:
public void UpdateTigers(string[] array, string persNo)
{
//Creating the connection string.
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Owner.mdf;Integrated Security=True";
//Creating a connection to the database with the connection string value.
using (SqlConnection con = new SqlConnection(connectionString))
{
//Opening the connection to the SQL database
con.Open();
//Creating a commands(querys) to be used.
SqlCommand cmd = new SqlCommand("UPDATE Owner SET Tiger1=@tiger1 WHERE Personnummer=" + persNo, con);
if (array[6] != "")
{
cmd = new SqlCommand("UPDATE Owner SET Tiger1=@tiger1, Tiger2=@tiger2 WHERE Personnummer=" + persNo, con);
}
if (array[7] != "")
{
cmd = new SqlCommand("UPDATE Owner SET Tiger1=@tiger1, Tiger2=@tiger2, Tiger3=@tiger3 WHERE Personnummer=" + persNo, con);
}
//Adding to the SqlCommand what @Name got for value.
cmd.Parameters.AddWithValue("@tiger1", array[6]);
if (array[6] != "")
cmd.Parameters.AddWithValue("@tiger2", array[7]);
if (array[7] != "")
cmd.Parameters.AddWithValue("@tiger3", array[8]);
//Sending the request to the database.
cmd.ExecuteNonQuery();
//No need for a con.Close() because the using statement closes it automatically.
}
答案 0 :(得分:0)
不要在一种方法中填写所有CRUD。为每个方法创建一个方法,如果查询成功运行则返回true,否则返回false。例如:
使用try catch。如果没有异常,则查询成功运行,如果成功则返回true,如果不是示例则返回false
public static bool UpdateTiger(Tiger p)
{
var command = new SqlCommand();
command.CommandText = "UPDATE Owner SET Tiger1=@tiger1 WHERE Personnummer=@perNum";
command.Parameters.AddWithValue("@tiger1", p.tiger1).Direction = ParameterDirection.Input;
command.Parameters.AddWithValue("@pernum", p.pernum).Direction = ParameterDirection.Input;
try
{
SqlHelper.ExecuteNonQuery(command); // this is where I run the procedure
return true;
}
catch (Exception e)
{
return false;
}
然后为其他类型的更新创建另一种方法
答案 1 :(得分:0)
我发现了问题。 在将数组发送到代码之前,我忘了更新我的数组:)。 谢谢你的时间!
答案 2 :(得分:0)
persNo
是否以字符串形式传递int?如果它是实际字符串,您可能需要检查查询。如果是字符串,您的查询将如下所示:...WHERE Personnummer=someString
当您真正想要...WHERE Personnummer='someString'
时。如果不是这样,请尝试在设置cmd
之后在Visual Studio中的代码中放置一个中断,或者在设置为查看正在执行的查询后将Debug.Print(cmd.CommandText);
放在某处。鉴于没有错误,我会说你的WHERE
条件没有提供匹配来更新数据库中的任何内容。