2013-05-31 30 views
2

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

这里是我的代码:

的[在邮件]列是我的布尔值。我已经在Access中试过这个查询,它在那里完美的工作。

 String query = "UPDATE Ontwikkeldossier SET Ontwikkeldossier.[In mail] = @fals WHERE (((Ontwikkeldossier.[OntwikkeldossierID])[email protected]));"; 
     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(); 
     } 

在此先感谢。

+1

如果你希望它是始终为假,那么为什么把它作为一个参数,只需将其设置为在查询 – V4Vendetta

+0

假的,因为我已经试过了,并没有奏效 –

+0

是价值在@fals = false或0?你需要传递0来工作吗? –

回答

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(); 
} 
+0

非常感谢,它的作品! –

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])[email protected]));"; 
+0

Stil不适用于我,我应该把cmd.parameters.add(“@ fals”,OleDbType.Boolean)放在后面? –

+0

是布尔类型数据库中的字段?这不是一个整数被_used_作为布尔值,对吧? – DonBoitnott

+0

在访问它的一个是/否字段 –

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

这个工作对我来说!我在Access中有“是/否”栏。 Update命令是:

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);