Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 用C语言将BLOB类型的数据从MySQL保存到Oracle#_C#_Mysql_Oracle_Bytearray_Blob - Fatal编程技术网

C# 用C语言将BLOB类型的数据从MySQL保存到Oracle#

C# 用C语言将BLOB类型的数据从MySQL保存到Oracle#,c#,mysql,oracle,bytearray,blob,C#,Mysql,Oracle,Bytearray,Blob,我正在VS2010 C#中开发一个应用程序,将数据从MySQL传输到Oracle,然后再次反向传输 其中有一些字段包含BLOB类型的数据,我需要尽快传输这些数据 我试图通过以下两种方法来实现这一点 public static MemoryStream DatabaseFileRead(MySqlConnection mcon) { var memoryStream = new MemoryStream(); using (var sqlQuery = new MySqlCommand(

我正在VS2010 C#中开发一个应用程序,将数据从MySQL传输到Oracle,然后再次反向传输

其中有一些字段包含BLOB类型的数据,我需要尽快传输这些数据

我试图通过以下两种方法来实现这一点

public static MemoryStream DatabaseFileRead(MySqlConnection mcon)
 {
  var memoryStream = new MemoryStream();
  using (var sqlQuery = new MySqlCommand(@"SELECT statement_file from user_account_statement", mcon))
  {
    using (var sqlQueryResult = sqlQuery.ExecuteReader())
    if (sqlQueryResult != null)
    {
     sqlQueryResult.Read();
     var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
     sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
     //Updated.
     memoryStream.Write(blob, 0, blob.Length);
    }
  }
  return memoryStream;
 }

 public static int DatabaseFilePut(MemoryStream fileToPut,OracleConnection con)
  {
   int varID = 0;
   byte[] file = fileToPut.ToArray();
   const string preparedCommand = @"
   INSERT INTO user_account_statement(statement_id,session_key,login_id,user_id,account_number,from_date,todate,ipaddress,create_date_time,STATEMENT_FILE)VALUES(1070,'fe79e0345986b5a439c26f731234868b53f877366f529','2335','204254','108142',@frmDate,@toDate,'106.79.126.249','2014-08-23 16:45:06',@File)";
   using (var sqlWrite = new OracleCommand(preparedCommand, con))
   {
    sqlWrite.Parameters.Add("@frmDate", OracleDbType.Date).Value = "2014-08-18";
    sqlWrite.Parameters.Add("@toDate", OracleDbType.Date).Value = "2014-08-23";
    sqlWrite.Parameters.Add("@File", OracleDbType.Blob, file.Length).Value = file;
    using (var sqlWriteQuery = sqlWrite.ExecuteReader())
    while (sqlWriteQuery != null && sqlWriteQuery.Read())
    {
     varID = sqlWriteQuery["statement_Id"] is int ? (int)sqlWriteQuery["statement_Id"] : 0;
    }
   }
   return varID;
  }
但是没有得到确切的结果。
有谁有更好的解决办法吗。提前感谢。

您没有为
memoryStream
@RuslanVeselov分配任何值,我为memoryStream分配了值,但放弃了更新代码。请现在检查。您应该将
位置设置为0,以有效地“倒带”流,以便从一开始就将其读入。此外,您还可以发现以下有趣的内容: