62,046
社区成员
发帖
与我相关
我的任务
分享
cmd.Transaction = cmd.Connection.BeginTransaction();
cmd.CommandText = getSql();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT content FROM doc_send FOR UPDATE ";
OracleDataReader reader = cmd.ExecuteReader();
using (reader)
{
reader.Read();
OracleLob clob = reader.GetOracleLob(0);
StreamWriter streamWrite = new StreamWriter(clob);
streamWrite.Write(getStr());
OracleLob templob = CreateTempLob(cmd, clob.LobType);
long actual = clob.CopyTo(templob);
cmd.Transaction.Commit();
}
string fileName = "xxxx";
string fileclob = "xxxx";
System.Data.OracleClient.OracleConnection conn;
string connString = "数据库连接串;";
conn = new OracleConnection(connString);
conn.Open();
//用参数方式写入数据库
OracleCommand myComm = conn.CreateCommand();
//定义SQL语句
string sql = "insert into table(filename,fileclob) " +
" values(@filename,@fileclob)";
myComm.CommandText = sql;
myComm.Parameters.Add("@filename",OracleType.NVarChar).Value = fileName;
myComm.Parameters.Add("@fileclob",OracleType.Clob,System.Text.Encoding.Default.GetByteCount(fileclob)).Value = fileclob;
//写入数据库
myComm.ExecuteNonQuery();
需要先创建一个临时lob才可以写的
OracleConnection connection = new OracleConnection("server=MyServer; integrated security=yes;");
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
command.Transaction = transaction;
command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;
byte[] tempbuff = new byte[10000];
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
command.Parameters.Clear();
command.CommandText = "MyTable.MyProc";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
command.ExecuteNonQuery();
transaction.Commit();
connection.Close