C#对Oracle Clob对象的读写(二)

2014-11-24 18:39:18 · 作者: · 浏览: 3
();
connection.Close();
connection.Dispose();
}
}



方式二:


事实上Oracle官方提供的ODAC112011beta插件中的Oracle.DataAccess命名空间已经提供了类似于ADO.NET的相关接口,因此针对Oracle中各种类型字段的操作可以使用这些方法直接实现,而无需考虑字段大小的问题。



方式二实现的操作是从Oracle数据库中读取Clob大字段(大于4Kb)并返回一个DataTable,及将大于4Kb的txt文件存入Oracle数据库中的Clob字段。



public DataTable FetchDBClobFiled(string sql)
{
if ((sql == null) || (sql.Length == 0))
{
return null;
}



OracleTransaction transaction;
DataTable dt = new DataTable();


try
{
conn.Open();


// Start a transaction
transaction = conn.BeginTransaction();


adapter.Fill(dt);


// Commit transaction
transaction.Commit();


return dt;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
finally
{
adapter.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
}
}


以上代码省略了connection,adapter及command的定义,其中传入的查询语句为简单的Select语句如“"SELECT ID, CLOBCOL, CLOBCOL2, CLOBCOL3, CLOBCOL4 FROM TableName"”。



public void UpdateDBWithClobField(string sql)
{
if ((sql == null) || (sql.Length == 0))
{
return;
}



OracleTransaction transaction;
OracleParameter[] clobParams = new OracleParameter[4];


try
{
conn.Open();


// Start a transaction
transaction = conn.BeginTransaction();


string content = string.Empty;
using (StreamReader sr = new StreamReader(srcPath))
{
content = sr.ReadToEnd();
}
clobParams[0] = cmd.Parameters.Add("CLOBCOL", OracleDbType.Clob, content, ParameterDirection.Input);
clobParams[1] = cmd.Parameters.Add("CLOBCOL2", OracleDbType.Clob, content,ParameterDirection.Input);
clobParams[2] = cmd.Parameters.Add("CLOBCOL3", OracleDbType.Clob, content,ParameterDirection.Input);
clobParams[3] = cmd.Parameters.Add("CLOBCOL4", OracleDbType.Clob, content,ParameterDirection.Input);



cmd.ExecuteNonQuery();


// Commit transaction
transaction.Commit();


}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
foreach (OracleParameter parameter in clobParams)
{
parameter.Dispose();
}
cmd.Dispose();
conn.Close();
conn.Dispose();
}
}


传入的sql语句为“insert into TableName values(0,:CLOBCOL,:CLOBCOL2,:CLOBCOL3,:CLOBCOL4)”