簡體   English   中英

ASP.Net C#CreateParameter,帶有空字符串

[英]ASP.Net C# CreateParameter with empty string

在我的ASP.net C#web項目中,我有一個包含參數的查詢命令對象。 我使用以下代碼填充參數:

DbCommand command = conn.CreateCommand();
command.CommandText = query; 
DbParameter param = command.CreateParameter();
param.ParameterName = parameter;
param.DbType = DbType.String;
param.Value = value;

此代碼適用於除空字符串之外的所有字符串。 如果我將輸入字段留空,則會將值傳遞為“”。 如果發生這種情況,我會收到以下異常:

ORA-01400: cannot insert NULL into (string)

有沒有辦法允許我在數據庫中插入空字符串?

我使用Oracle數據庫,我使用System.Data.OracleClient作為提供程序。

如果要插入空字符串,則必須允許NULL值。 否則,Oracle會將空字符串靜默轉換為NULL,您將獲得異常。

另一個選擇是插入一個帶有空格' '的空字符串,但我認為這會很痛苦。

以下是Oracle為什么采用這種(非標准)方式的進一步信息: 為什么Oracle 9i將空字符串視為NULL?

如果值為null,請設置param.Value = DBNull.Value,而不是將其設置為null:

if (value == null)
{
    param.Value = DBNull.Value;
}
else
{
    param.Value = value;
}

嘗試

param.Value = string.IsNullOrEmpty(value) ? DBNull.Value : value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM