我有以下代码将一些数据插入到 Access 表中。它以逗号分隔线开头,我将其拆分为字符串数组,然后将数组元素添加为参数:
string line = "one\ttwo\t\tfour";
string[] values = line.Split('\t');
using (OleDbCommand com = new OleDbCommand("INSERT INTO [MyTable] (" +
"[Field1], [Field2], [Field3], [Field4] "
") VALUES (" +
"?, ?, ?, ?" +
")", con))
{
com.Parameters.Add("@p0", OleDbType.Char, 255).Value = (object)values[0] ?? DBNull.Value;
com.Parameters.Add("@p1", OleDbType.Char, 255).Value = (object)values[1] ?? DBNull.Value;
com.Parameters.Add("@p2", OleDbType.Char, 255).Value = (object)values[2] ?? DBNull.Value;
com.Parameters.Add("@p3", OleDbType.Char, 255).Value = (object)values[3] ?? DBNull.Value;
com.ExecuteNonQuery();
}
在上面的例子中,@p2
不会有值。它作为空白值而不是空值插入到 Access 表中。至少我认为我的解释是正确的。如果我查询Field3 is Null
我没有得到任何结果。如果我查询Field3 = ""
我会得到结果。它是空白还是空有关系吗?有“首选”选项吗?
谢谢!