无法使用c#

时间:2017-10-18 01:06:02

标签: c# sql

我正在使用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.
        }

3 个答案:

答案 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条件没有提供匹配来更新数据库中的任何内容。