PDA

View Full Version : تعريف uniqueidentifier به صورت varchar(36



bftarane
جمعه 23 فروردین 1392, 20:55 عصر
سلام.
من هميشه قبلاً اگه فيلدي از نوع uniqueidentifier در جدول داشتم
در SPهام به صورت زير تعريف مي کردم در صورت نياز به پارامتر

@myparameter uniqueidentifier
ولي حالا بهم گفته شده حتماً اين طوري بنويسم

@myparameter varchar(36)
حالا من سوالم اينه اين باعث ايجاد مشکل نمي شه؟ منظورم اينه که آيا convert هم بايد موقع سلکت يا insert صورت بگيره؟

حمیدرضاصادقیان
جمعه 23 فروردین 1392, 22:48 عصر
سلام
نوع این دوفیلد باهم تفاوت دارند و یکسری مقادیر خاص داخلشون هست.
چرا باید به شکل دوم نوشته بشه اگر نیاز به Uniqueidentifier هست؟؟

bftarane
شنبه 24 فروردین 1392, 09:03 صبح
ببینید به من این طور گفتن که uniqueidentifier در واقع string هست و چون 36 کاراکتر داره به صورت varchar(36) می گیریم.
ببینید مثلاً در متدهای درج و ... هم نوعش رو string می گیرند.
مثلاً متد زیر رو در نظر بگیرید:

Public Function GetDataset(ByVal docId As String) As DataSet
Dim MyObject(0) As Object
Dim objPublicService As clsDataAccess
Dim objConnection As Connection.istgConnection
Try
objConnection = New Connection.istgConnection


MyObject.SetValue(docId, 0)
Return clsDataAccess.ExecuteDataset(objConnection.ConStrO rgRelation, "sptblPublicServiceSelect", MyObject)
Catch ex As Exception
Throw ex
Finally
objPublicService = Nothing
objConnection = Nothing
End Try
End Function

ببینید اون DocId در جدول از نوع uniqueidentifier هست.

pashna
سه شنبه 27 فروردین 1392, 09:19 صبح
سلام،

من نمی‌دونم به چه دلیلی‌ به شما این حرف زدن، ولی‌ به نظر من اتفاقا کاملا برعکس. به نظر من بهتره همون Uniqueidentifier بمونه چون سایز Uniqueidentifier
۱۶ بایت هست ولی‌ Varchar(36)
۳۶ بایت

tooraj_azizi_1035
سه شنبه 27 فروردین 1392, 12:57 عصر
ببینید به من این طور گفتن که uniqueidentifier در واقع string هست و چون 36 کاراکتر داره به صورت varchar(36) می گیریم.
به شما اشتباه گفتن.
شما باید به جای string از Guid استفاده کنید.

Guid g = (Guid)rs["my_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();
}
}


راهنمای انتخاب نوع های داده ای معادل CLR و SQL:
Mapping CLR Parameter Data (http://msdn.microsoft.com/en-us/library/ms131092.aspx)