c# - 如何将空值插入到 Uniqueidentifier 列

标签 c# .net

在我的 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/

相关文章:

C# DownloadSync 事件未触发

c# - 尝试将 float 转换为 Int32 时 Convert.ToInt32(float) 失败

c# - 如何使用 Web 服务更新 Sharepoint 上上传文档的属性?

c# - 在 C# 中将任何货币转换为十进制的最佳方法是什么?

c# - 在外部文件中写入 appSettings

c# - 如何在 WPF DataGrid 上设置边框边距?

c# - 如何在服务器上将 url 保存为 html 页面

.net - 为什么 "dotnet test"在 ubuntu LTS 14.04 上失败?

c# - .Net 流 : Returning vs Providing

.net - LINQ 表达式 TreeMap 灵完整吗?