Dan*_*iel 62 c# sql guid uniqueidentifier
我想创建一个GUID并将其存储在数据库中.
在C#中,可以使用Guid.NewGuid()创建guid.这会创建一个128位整数.SQL Server有一个uniqueidentifier列,它包含一个巨大的十六进制数.
是否有一种好的/首选的方法可以使C#和SQL Server guids一起发挥良好作用?(即使用Guid.New()创建一个guid,然后使用nvarchar或其他字段将其存储在数据库中......或者通过其他方式创建SQL Server期望的表单的一些十六进制数)
DLK*_*LKJ 63
这是一个代码片段,展示了如何使用参数化查询插入Guid:
using(SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using(SqlTransaction trans = conn.BeginTransaction())
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.Transaction = trans;
cmd.CommandText = @"INSERT INTO [MYTABLE] ([GuidValue]) VALUE @guidValue;";
cmd.Parameters.AddWithValue("@guidValue", Guid.NewGuid());
cmd.ExecuteNonQuery();
trans.Commit();
}
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ert 50
SQL期望GUID为字符串.C#中的以下内容返回Sql期望的字符串.
"'" + Guid.NewGuid().ToString() + "'"
Run Code Online (Sandbox Code Playgroud)
就像是
INSERT INTO TABLE (GuidID) VALUE ('4b5e95a7-745a-462f-ae53-709a8583700a')
Run Code Online (Sandbox Code Playgroud)
是它在SQL中应该是什么样子.
您可以通过指定将C#Guid值直接传递给SQL存储过程SqlDbType.UniqueIdentifier
.
您的方法可能如下所示(前提是您的唯一参数是Guid):
public static void StoreGuid(Guid guid)
{
using (var cnx = new SqlConnection("YourDataBaseConnectionString"))
using (var cmd = new SqlCommand {
Connection = cnx,
CommandType = CommandType.StoredProcedure,
CommandText = "StoreGuid",
Parameters = {
new SqlParameter {
ParameterName = "@guid",
SqlDbType = SqlDbType.UniqueIdentifier, // right here
Value = guid
}
}
})
{
cnx.Open();
cmd.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
另请参见:SQL Server uniqueidentifier
归档时间: |
|
查看次数: |
124598 次 |
最近记录: |