添加多个列时,SQL Update语句不会更新值,否则会

时间:2017-05-18 09:13:53

标签: c# sql winforms

没有例外,一切都会被执行,但更新不会发生!

当我只有@JIR参数时,一切正常,但现在我添加了@Paragon并且更新没有完成它的工作。没有任何例外,数据传递正常......

我没有看到这个查询有什么问题,有人知道可能出现什么问题吗?

private static void InsertJIR(FisDnevni racun)
        {
            using (OleDbConnection con = new OleDbConnection(RegistarBlagajna.Modul.VezaNaBazu.ConnectionString))
            {
                try
                {
                    con.Open();
                    OleDbCommand cmd = new OleDbCommand(@"
                    UPDATE FisDnevni
                    SET [JIR] = @JIR, 
                    [Paragon] = @Paragon                                
                    WHERE BrojRacuna = @BrojRacuna"
                    , con);
                    cmd.Parameters.AddWithValue("@JIR", racun.JIR.Substring(0,37));
                    cmd.Parameters.AddWithValue("@BrojRacuna", racun.BrojRacuna);
                    cmd.Parameters.AddWithValue("@Paragon", racun.Paragon);
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

2 个答案:

答案 0 :(得分:3)

这是一个很好的老问题 - 确保OleDbParameter中的查询参数按照正确的顺序声明:

using (OleDbConnection con = new OleDbConnection(RegistarBlagajna.Modul.VezaNaBazu.ConnectionString))
{
    try
    {
        con.Open();
        using (OleDbCommand cmd = new OleDbCommand(@"UPDATE FisDnevni SET [JIR] = @JIR, [Paragon] = @Paragon WHERE BrojRacuna = @BrojRacuna", con)
        {
             cmd.Parameters.AddWithValue("@JIR", racun.JIR.Substring(0,37));
             // this must be the second parameter instead of third one
             cmd.Parameters.AddWithValue("@Paragon", racun.Paragon);
             cmd.Parameters.AddWithValue("@BrojRacuna", racun.BrojRacuna);
             cmd.ExecuteNonQuery();
             con.Close();
        }
    }
    catch (Exception)
    {
        throw;
    }
}

请注意OLE DB .NET Provider doesn't recognize named parameters for OleDbCommand when CommandType is set to Text,但它显然确实识别了参数顺序,因此只要它们以正确的顺序传递,它就会被接受为查询参数。

相关问题:

how to update a table using oledb parameters?

答案 1 :(得分:0)

也许我从来没有用过它,但为什么会有@在这里?

OleDbCommand( @

我还有一段时间没有使用过C#,但如果没有+或者什么东西可以进行多行连接吗?

第三,为什么在这些列名上使用[]?我没有看到任何特殊字符或空格。

这篇文章听起来比我的意思更加笨拙,我没有尝试,只是合法的好奇