在我的 C# 项目中,我需要向 UniqueIdentifier 列插入一些空值。
对于字段 city Guid,state Guid 字段我应该能够插入空值 如果没有可用的值(唯一标识符)。 我收到以下错误
“从字符串转换为唯一标识符时转换失败。”
这是我的代码。
string Query = @"INSERT INTO mytable
(table_GUID,
Date,
city_GUID,
state_GUID,
)
VALUES
('" + tableGUID + @"',
'" + Date + @"',
'" + cityGUID + @"',
'" + stateGUID + @"'
)
string insert = sql.executeNonQuery(Query);
最佳答案
您不应该提供这样的值。创建一个 SqlCommand 并将值作为参数提供。要插入空值,请使用 DBNull.Value
var command = new SqlCommand(
@"INSERT INTO mytable (table_GUID, Date, city_GUID, state_GUID)
VALUES (@TableGuid, @Date, @CityGuid, @StateGuid)", sqlConnection);
command.Parameters.AddWithValue("TableGuid", tableGUID ?? DBNull.Value);
command.Parameters.AddWithValue("Date", Date);
command.Parameters.AddWithValue("CityGuid", cityGUID ?? DBNull.Value);
command.Parameters.AddWithValue("StateGuid", stateGUID ?? DBNull.Value);
command.ExecuteNonQuery();
另一种方法是提供 NULL 作为值。参见 how do you insert null values into sql server
您还可以定义一个辅助函数来返回用引号括起来的值或 NULL 字符串。
private string GetQuotedParameterThing(Guid? value)
{
return value == null ? "NULL" : "\"+ value + \"";
}
然后只需将 GetQuotedParameterThing(tableGUID)
提供给您的命令字符串即可。
关于c# - 如何将空值插入到 Uniqueidentifier 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993021/