Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 其他表的Oracle guid_C#_Oracle_Guid_Save_Byte - Fatal编程技术网

C# 其他表的Oracle guid

C# 其他表的Oracle guid,c#,oracle,guid,save,byte,C#,Oracle,Guid,Save,Byte,目前我正在编写一个小型转换程序,它将主键策略转换为使用guid而不是整数。这是一个简单的客户诱导需求,我无法改变 我已经向数据库中的每个表中添加了一个原始(16)的替代pk候选者,并用SYS_GUID()填充了每个记录。 我对FK也做了同样的操作,为每个FK添加了一个替换列。 现在,我正在将FK链接到它们的PK,通过查询父表,我获得特定行的guid/new键,然后我想插入子表中的替代候选FK 有点像这样: sqlString = "SELECT PK FROM " + t+ " WHERE "

目前我正在编写一个小型转换程序,它将主键策略转换为使用guid而不是整数。这是一个简单的客户诱导需求,我无法改变

我已经向数据库中的每个表中添加了一个原始(16)的替代pk候选者,并用SYS_GUID()填充了每个记录。 我对FK也做了同样的操作,为每个FK添加了一个替换列。 现在,我正在将FK链接到它们的PK,通过查询父表,我获得特定行的guid/new键,然后我想插入子表中的替代候选FK

有点像这样:

sqlString = "SELECT PK FROM " + t+ " WHERE " + fkcol+ " = " + childValue;
OracleDataReader guidReader = GetDataReader(sqlString);

while (guidReader.Read())
{
    sqlString = "UPDATE T SET FK = " + guidReader["PK"];
}
调试此sqlString将获得以下值:

更新SIS_T_用户设置FK_C_员工ID =系统字节[]

现在,如何在oracle数据库中将其保存为一个漂亮的guid

编辑方式:

OracleCommand command = new OracleCommand(sqlString, this.oracleConnection);
                                command.CommandType = CommandType.Text;
                                OracleParameter op1 = new OracleParameter("guid", OracleDbType.Raw);
                                op1.Value = guidReader["PK"];
                                command.Parameters.Add(op1);
                                try
                                {
                                    command.ExecuteNonQuery();
                                }
                                catch (OracleException oex)
                                {
                                    Console.WriteLine("Unable to update: {0}", oex.Message);
                                }

您为什么不在Oracle的
端执行这些操作呢

MERGE
INTO    sis_t_user s
USING   employee e
ON      (s.integer_fk = e.integer_pk)
WHEN MATCHED THEN
UPDATE
SET     s.guid_fk = e.guid_pk
请尝试以下代码:

sqlString = "UPDATE T SET FK = '" + (new Guid((byte[])guidReader["PK"])).ToString() + "'";
基本上,您只需要从字节创建guid,然后将其转换为字符串。
有一个Guid构造函数允许它:。

我不想对它做太多的阐述,但最终我还是需要反复使用Guid,所以迟早会出现相同的问题,使用不同的涂层。虽然您的解决方案很好,但它不足以满足(我们的特定)未来需求。否则我就不会问这个问题了。你能展示一下更新的样子吗?我想你需要更新SIS_T_用户集FK_C_EMPLOYEE_ID='33b386b2-bf1d-42be-9110-c688cb8c8afc'之类的东西。我做了一些更改,而不是使用参数化查询。工作起来容易多了