2

我已经用 C# 编写了一个程序,现在我想在我的 Access 数据库中更新一个布尔值。此布尔值将始终更新为false。我绝对尝试了一切,我的价值没有改变。请帮忙。

这是我的代码:

[In mail] 列是我的布尔值。我已经在 Access 中尝试过这个查询,它在那里工作得很好。

        String query = "UPDATE Ontwikkeldossier SET Ontwikkeldossier.[In mail] = @fals WHERE (((Ontwikkeldossier.[OntwikkeldossierID])=@ontwikkeldossierid));";
        using(OleDbConnection conn = new OleDbConnection(connstring))
        {
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(query, conn);
            cmd.Parameters.Add("@fals", OleDbType.Boolean, 1, "[In mail]").Value = false;
            cmd.Parameters.Add("@ontwikkeldossierid", OleDbType.Numeric).Value = Convert.ToInt32(newrow.Cells[0].Value.ToString());
            cmd.ExecuteNonQuery();
        }

提前致谢。

4

3 回答 3

1
updateCmd.Parameters.Add("@3", OleDbType.Boolean).Value = "true";

这对我有用!我在 Access 中有“是/否”列。更新命令是:

OleDbCommand updateCmd = new OleDbCommand("UPDATE email SET server = @1, port = @2, ssl = @3, utilizator = @4, parola = @5, subiect = @6, email = @7 WHERE ID = @8", connection);
于 2013-10-02T13:08:59.087 回答
0

应该这样:

cmd.Parameters.Add("@fals", OleDbType.Boolean, 1, "[In mail]").Value = false;

而是:

cmd.Parameters.Add("@fals", OleDbType.Boolean).Value = false;  //or zero, since it's an object, the DB might care...

来源有问题吗?如果你提供价值,为什么你想要价值的来源?

当然,由于它对您来说总是错误的,您可以简单地更改查询并完全消除参数:

String query = "UPDATE Ontwikkeldossier SET Ontwikkeldossier.[In mail] = 0 WHERE (((Ontwikkeldossier.[OntwikkeldossierID])=@ontwikkeldossierid));";
于 2013-05-31T12:00:35.083 回答
0

对于它的价值,我刚刚测试了以下代码,它对我有用:

using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\__tmp\testData.accdb;"))
{
    conn.Open();
    using (var cmd = new OleDbCommand(
            "UPDATE Ontwikkeldossier SET [In mail]=? WHERE OntwikkeldossierID=?",
            conn))
    {
        cmd.Parameters.AddWithValue("?", false);
        cmd.Parameters.AddWithValue("?", 1);
        cmd.ExecuteNonQuery();
    }
    conn.Close();
}
于 2013-05-31T12:21:31.237 回答