我正在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;
}
但没有得到确切的结果。 任何人都有更好的解决方案。提前谢谢。