我有这个查询似乎工作,除非我尝试在参数中传递空值:
using (OleDbCommand com = new OleDbCommand("INSERT INTO [GROUP] ([Group Number], [Group Name], [Address 1], " +
" [Address 2], [City State Zip], [Phone], [Carrier Code], [Retail Plan Num 1], [Retail Plan Num 2], " +
" [Retail Plan Num 3], [Retail Plan Num 4], [Retail Plan Num 5], [Plan Start Date 1], [Plan Start Date 2], " +
" [Plan Start Date 3], [Plan Start Date 4], [Plan Start Date 5]" +
") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", con))
{
com.Parameters.Add("@p0", OleDbType.Char, 255).Value = values[0];
com.Parameters.Add("@p1", OleDbType.Char, 255).Value = values[1];
com.Parameters.Add("@p2", OleDbType.Char, 255).Value = values[2];
com.Parameters.Add("@p3", OleDbType.Char, 255).Value = values[3];
com.Parameters.Add("@p4", OleDbType.Char, 255).Value = values[4];
com.Parameters.Add("@p5", OleDbType.Char, 255).Value = values[5];
com.Parameters.Add("@p6", OleDbType.Char, 255).Value = values[6];
string[] values7 = values[7].Split('\t');
com.Parameters.Add("@p7", OleDbType.Char, 255).Value = values7[0];
com.Parameters.Add("@p8", OleDbType.Char, 255).Value = values7[1];
com.Parameters.Add("@p9", OleDbType.Char, 255).Value = values7[2];
com.Parameters.Add("@p10", OleDbType.Char, 255).Value = values7[3];
com.Parameters.Add("@p11", OleDbType.Char, 255).Value = values7[4];
com.Parameters.Add("@p12", OleDbType.Date, 255).Value = "1/1/1999";
com.Parameters.Add("@p13", OleDbType.Date, 255).Value = null;
com.Parameters.Add("@p14", OleDbType.Date, 255).Value = "1/1/1999";
com.Parameters.Add("@p15", OleDbType.Date, 255).Value = "1/1/1999";
com.Parameters.Add("@p16", OleDbType.Date, 255).Value = "1/1/1999";
com.ExecuteNonQuery();
}
这将返回错误
Parameter ?_14 has no default value
。如果我在上面更改了代码,因此p12参数为null,则错误为Parameter ?_13 has no default value
。这里发生了什么?
最佳答案
.Value
为null
的参数不会传递。完全没有
您需要传递DBNull.Value
来传递语义null
。例如:
com.Parameters.Add("@p7", OleDbType.Char, 255).Value =
((object)values7[0]) ?? DBNull.Value;
(等等)
And yes: I agree that this is ridiculous
关于c# - 如果先前的参数为null,则参数没有默认值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17925692/