I am developing an application in VS2010 C# to transfer data from MySQL to Oracle and reverse again.
In it there are some fields containing BLOB type data and I need that data to transfer as quick as possible.
I tried to do this by below two methods.
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;
}
But not getting the exact result. Do any one have better solution for this. Thanks in advance.