没有例外,一切都会被执行,但更新不会发生!
当我只有@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;
}
}
}
答案 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
,但它显然确实识别了参数顺序,因此只要它们以正确的顺序传递,它就会被接受为查询参数。
相关问题:
答案 1 :(得分:0)
也许我从来没有用过它,但为什么会有@在这里?
OleDbCommand( @ “
我还有一段时间没有使用过C#,但如果没有+或者什么东西可以进行多行连接吗?
第三,为什么在这些列名上使用[]?我没有看到任何特殊字符或空格。
这篇文章听起来比我的意思更加笨拙,我没有尝试,只是合法的好奇