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里面永远只有一条记录。