编程语言是C#
数据库是ORACLE 8.1.6现在的问题是,BLOB字段可以正常写入数据,但是读数据的时候报错“发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。数据类型不被支持。”    public static void Main(string[] sParameter)
    {
        string sConnectionString = "Provider=MSDAORA;User ID=test;Data Source=handing;Password=test;server=192.168.0.5;";
        OleDbConnection con = new OleDbConnection(sConnectionString);
        con.Open();        OleDbCommand cmd = con.CreateCommand();
        OleDbTransaction transaction = con.BeginTransaction();
        cmd.Transaction = transaction;        try
        {
            string SQL = "SELECT * from clob_test2";
            cmd.CommandText = SQL;
            cmd.Prepare();                //在这里出错
            OleDbDataReader dreader = cmd.ExecuteReader();
            
            transaction.Commit();
            Console.WriteLine("成功!");
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            Console.WriteLine("失败!" + ex.Message);
        }        Console.Read();
    }

解决方案 »

  1.   

    怎么看我现在用的是OLEDB驱动还是ODBC驱动?从连接字符串可以看出来吗? 
    网上说ODBC不支持BLOB类型在网上找到一个例程。这是他的连接字符串。 
    string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;"; 
     
    provider=OraOLEDB.Oracle。他装的是什么?
      

  2.   


    try
            {
                string SQL = "SELECT * from clob_test2";
                cmd.CommandText = SQL;
                cmd.Prepare();                //在这里出错
                OleDbDataReader dreader = cmd.ExecuteReader();
                if(dreader.reader())
                  {
                   string Read1= read["字段"].tostring()
                  }
                transaction.Commit();
                Console.WriteLine("成功!");
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                Console.WriteLine("失败!" + ex.Message);
            }        Console.Read(); if(dreader.reader())
                  {
                   string Read1= read["字段"].tostring()
                  }
    这样可以不??
    是否是你需要的效果??
    另外只看到con.open();
    没看到con.close();
      

  3.   

    string conn_str = "";   
       OleDbDataAdapter da = new OleDbDataAdapter();
       DataSet ds = new DataSet();
       OleDbConnection conn = new OleDbConnection(conn_str);
       OleDbCommand cmd = new OleDbCommand("SELECT PHOTO FROM USER WHERE USER_ID = 1", conn);
       da.SelectCommand = cmd;
       cmd.Connection.Open();
       da.Fill(ds);   byte[] img = new byte[0];
       DataRow dr;
       dr = ds.Tables[0].Rows[0];   if (!ds.Tables[0].Rows[0]["PHOTO"].ToString().Equals(""))
       {
        img =  (byte[])dr["PHOTO"];
       }   Response.ContentType= "image/*";
       Response.BinaryWrite (img);   conn.Close();
      

  4.   

    不建议用OleDb...应该用System.Data.OracleClient或ODP.NET...
      

  5.   

    连接字符串里面的
    Provider=MSDAORA
    provider=OraOLEDB.Oracle
    代表什么?有什么意义?是指的使用什么驱动吗?这个是ODBC的驱动还是OLEDB的驱动?