【发布时间】:2019-12-13 14:52:40
【问题描述】:
我对 C# 还很陌生,正在为以下查询苦苦挣扎。
我正在尝试将值插入数据库,但它不接受 null 作为值。我需要区分该字段中的 0 和无,因为它显示了是否发生了计算。
这是我目前所拥有的:
System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection();
var connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\Projects\database.accdb";
System.Data.OleDb.OleDbCommand ins = new System.Data.OleDb.OleDbCommand();
objConn.ConnectionString = connStr;
objConn.Open();
ins.Connection = objConn;
ins.CommandText = "INSERT INTO AutomatedDecisionProcess(item1, item2, item3) VALUES(@item1, @item2, @item3)";
ins.Parameters.AddWithValue("@item1", SolveBlanks(row[0]));
ins.Parameters.AddWithValue("@item2", SolveBlanks(row[1]));
ins.Parameters.AddWithValue("@item3", SolveBlanks(row[2]));
ins.ExecuteNonQuery();
objConn.Close();
ins.Dispose();
Console.WriteLine("success?");
我正在尝试我编写的这个函数:
public static string SolveBlanks(object number)
{
string answer = number.ToString();
if (answer == "")
{
answer = null;
}
return answer;
}
有什么想法吗?
【问题讨论】:
-
试试
dbnull! -
当您尝试插入 null 时会发生什么? “它不起作用”并没有提供任何关于问题可能是什么的迹象。另外,聪明的用户名。我喜欢它。
-
不建议使用
AddWithValue,特别是如果值为null,此方法可能无法设置正确的参数类型。而是自己创建和添加参数。 -
@RenéVogt 很有趣,到目前为止我已经找到了解决我的问题的所有方法,我会考虑创建参数,谢谢!