gpt4 book ai didi

c# - 使用 C# 将 Null 插入数据库

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:40 24 4
gpt4 key购买 nike

我是 C# 的新手,正在努力处理以下查询。

我正在尝试将值插入数据库,但它不接受 null 作为值。我需要在该字段中区分 0 和 nothing,因为它显示是否发生了计算。

这是我目前所拥有的:

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

有什么想法吗?

最佳答案

答案来自:What is the difference between null and System.DBNull.Value?

这可能对你有帮助...

嗯,null 不是任何类型的实例。相反,它是一个无效的引用。

但是,System.DbNull.Value 是对 System.DbNull 实例的有效引用(System.DbNull 是单例,而 System.DbNull.Value 为您提供对该类的单个实例的引用)表示不存在* 数据库中的值。

*我们通常会说 null,但我不想混淆这个问题。

因此,两者在概念上存在很大差异。关键字 null 表示无效引用。 System.DbNull 类表示数据库字段中不存在的值。一般来说,我们应该尽量避免使用相同的东西(在本例中为 null)来表示两个截然不同的概念(在本例中是无效引用与数据库字段中不存在的值)。

请记住,这就是为什么很多人提倡一般使用空对象模式,这正是 System.DbNull 的一个例子。

关于c# - 使用 C# 将 Null 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59324926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com