相关疑难解决方法(0)

AddWithValue参数为NULL时的异常

我有以下代码来指定SQL查询的参数.我使用时会遇到异常Code 1; 但是当我使用时工作正常Code 2.在Code 2我们检查null并因此检查if..else块.

例外:

参数化查询'(@ application_ex_id nvarchar(4000))SELECT E.application_ex_id A'需要参数'@application_ex_id',这是未提供的.

代码1:

command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID);
Run Code Online (Sandbox Code Playgroud)

代码2:

if (logSearch.LogID != null)
{
         command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID);
}
else
{
        command.Parameters.AddWithValue("@application_ex_id", DBNull.Value );
}
Run Code Online (Sandbox Code Playgroud)

  1. 你能解释一下为什么它无法从代码1中的logSearch.LogID值中获取NULL(但能够接受DBNull)吗?

  2. 有没有更好的代码来处理这个?

参考:

  1. 将null分配给SqlParameter
  2. 返回的数据类型因表中的数据而异
  3. 从数据库smallint到C#nullable int的转换错误
  4. DBNull有什么意义?

    public Collection<Log> GetLogs(LogSearch logSearch)
    {
        Collection<Log> logs = new Collection<Log>();

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            string commandText = @"SELECT  *
                FROM Application_Ex E 
                WHERE  (E.application_ex_id = @application_ex_id …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net

76
推荐指数
2
解决办法
5万
查看次数

标签 统计

.net ×1

ado.net ×1

c# ×1