Parameter has no default value if previous param is null?(如果前一个参数为空,则参数没有默认值?)
问题描述
I have this query which seems to work unless I try to pass a null value in a parameter:
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(' ');
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();
}
This will return an error Parameter ?_14 has no default value
. If I change my code above so the p12 parameter is null, then the error says Parameter ?_13 has no default value
.
What's going on here?
Parameters with a .Value
of null
are not passed. At all.
You need to pass DBNull.Value
instead to pass a semantic null
. For example:
com.Parameters.Add("@p7", OleDbType.Char, 255).Value =
((object)values7[0]) ?? DBNull.Value;
(etc)
And yes: I agree that this is ridiculous
这篇关于如果前一个参数为空,则参数没有默认值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如果前一个参数为空,则参数没有默认值?


基础教程推荐
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 将 XML 转换为通用列表 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01