Oracle的GUID:Raw(16)

  最近用了Oracle作为开发的数据库。以前用Sqlserver的时候用GUID作为主键的(数据类型:uniqueidentifier),Oracle的GUID类型变成RAW(16)了。从数据库读出来RAW(16)放到DateTable里,这个RAW(16)是个Byte[16]数组,这就没法"="之类的进行比较了。所以得转成GUID。

.NET中:

//RAW(16)转到GUID:

 dt.Columns.Add("Test_idGuid");//添加Guid列

foreach (DataRow row in dt.Rows)
{
  row["Test_idGuid"] = new Guid((byte[])row["Test_id"]).ToString();
}

DataRow[] dts = dt.Select("Test_idGuid = '" +row["Test_idGuid"].ToString()+"'");

 

//GUID转到RAW(16):

BitConverter.ToString(Guid.Parse(dt.Rows[0]["Test_idGuid"].ToString()).ToByteArray()).Replace("-","");

 

//////////////////////////////////////////////////////////////////

ORACLE中产生RAW(16):

select SYS_GUID() from dual; //dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。

 

 

posted @ 2013-09-06 11:45  CIWang  阅读(6151)  评论(0编辑  收藏  举报