c#中怎么获取clob的内容?谁有代码啊,我刚入门 ,就遇到这样的问题,执行一个oracle中的一个sql语句,得到的结果是clob,clob的类型估计很难改了,怎么获取啊,我适用getbyes获取,但是报错啊
代码如下,错误是:Specified cast is not valid.
public bool ExecuteProcedures_ora(string procedureName, string tableName, string conditon, ref byte[] returnvalue)
{

OracleConnection connection = new OracleConnection(this.connectionString_Oracle);
try
{   

connection.Open();

}
catch(Exception ex)
{
string s =ex.ToString();
}

OracleCommand com = new OracleCommand(procedureName, connection);


try 
{   
OracleDataReader aReader = com.ExecuteReader();  aReader.Read(); aReader.GetBytes(0,0,returnvalue,1,8000);


System.IO.FileStream stream = new FileStream("C:\\test11.txt",FileMode.Create); System.IO.BinaryWriter writerBinary = new BinaryWriter(stream);
writerBinary.Write(returnvalue);
writerBinary.Flush();
writerBinary.Close();
                 
    
}
catch (Exception ex)
{
if (connection.State == ConnectionState.Open)
connection.Close();
return false;
}

if (connection.State == ConnectionState.Open)
connection.Close();
return true;
}

解决方案 »

  1.   

    try:returnvalue = (byte[]) aReader.GetValue(0));
      

  2.   

    returnvalue = (byte[]) aReader.GetValue(0));
    试了,还是有错拉
      

  3.   

    有没有其他的方法取clob的类型啊?急啊
      

  4.   

    我用的是c#2003,操作系统是winxp
      

  5.   

    可以用转成二进制的方式来取得,你可以看看数据库存放image类型的例子。
      

  6.   

    已经解决了,谢谢,直接用ExecuteScalar就可以了。
      

  7.   

    ExecuteScalar 得到 object 类型,
    跟 aReader.GetValue(列索引) 是完全相同的。这一点我已经验证过了。
    会不会是你的那个列不是选出字段列表里的第 0 列?
    我上面写的 0 只是随便举的一个例子。
      

  8.   

    NeilChen123()我这个表中就只有一列,所以就直接用ExecuteScalar了,但是我用所有的getvalue或者其他的获取object都得不到。直接报错。我直接将msdn上的例子copy出来都出错。