怎样读取Oracle数据库的Long型的字段?

解决方案 »

  1.   

    直接读取即可string connstr = "数据库连接串";
    OracleConnection conn = new OracleConnection(connstr);
    conn.Open();
    string sql = "select tmp_long from tmp where tmp_id=5";
    OracleDataAdapter myAdp = new OracleDataAdapter(sql, conn);
    DataTable mydt = new DataTable();
    myAdp.Fill(mydt);值 = mydt.Rows[0][0].ToString();
      

  2.   

    to: hchxxzx(NET?摸到一点门槛) Long型不是以二进制的形式存的吗?
    我用DataReader.GetBytes()了,我再试试
      

  3.   

    包括CLOB,也可以直接读取,但写的时候就不能直接写.
    但建议你用CLOB,不要用LOGN,会出很多问题的,比如无法查找,参与联合查询时出错,无法转移等
      

  4.   

    to: hchxxzx(NET?摸到一点门槛) 
    谢谢你了数据库我不能改的
    我刚才试了,同样的语句用Microsoft oracle client驱动就能读出来
    而换成Oracle Data Provider for .NET 就读不出来了,返回一个空串了,为什么呀
      

  5.   

    select 取出来会被自动截取,我也找过很多地方没找到方法。Oracle建议不要用,不过他的数据字典自己会用到。郁闷ing
      

  6.   

    我试了一上,LOGN字段可以直接取出来,你看看我的例子.private System.Data.OleDb.OleDbConnection conn;private DataTable conn_open(string sql)
    {
    string connstr = "Provider=MSDAORA.1;Password=aqjc;User ID=aqjc;Data Source=aqjc";
    this.conn = new OleDbConnection(connstr);
    this.conn.Open();
    OleDbCommand  myOleDbCommand = new OleDbCommand(sql,this.conn);
    OleDbDataAdapter myData =  new OleDbDataAdapter(myOleDbCommand); DataSet myDataset = new DataSet();
    try
    {
    myData.Fill(myDataset);
    }
    catch(Exception ex)
    {
    throw ex;
    } this.conn.Close();
    return myDataset.Tables[0];
    }private void Page_Load(object sender, System.EventArgs e)
    {
    string sql = "select * from tmp where tmp_id=5";
    DataTable mytab = this.conn_open(sql);
    this.Response.Write(mytab.Rows[0]["tmp_long"].ToString());
    }
      

  7.   

    to: hchxxzx(NET?摸到一点门槛) 
    谢谢你这么热心的帮助我oracle client 和OLEDB我也试了,可以直接读出来
    现在的问题是我们使用的是Oracle Data Provider for .NET 
    也就是ODP.net做驱动,这样的话同样的方法就不出来值了
      

  8.   

    现在的问题是我们使用的是Oracle Data Provider for .NET 
    ----------------
    你这个是不是原来在1.0版里面,微软专门做的那个驱动?难道你不能换用别的吗?
      

  9.   

    没办法呀,客户要求用ODP.NET
    但是我试了ODP.NET的dataReader的大部分方法,都读不出long型得值,而同样的方法换成oracle client 和OLEDB就好用,真郁闷呀
    恐怕是不能解决了...
      

  10.   

    Oracle Data Provider for .NET 是Oracle 公司做的for .net 的驱动
    http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html
      

  11.   

    Long型不是以二进制的形式存的吗?
    ========
    你是想读取二进制的字段吗
      

  12.   

    的确可以直接取出来,我试过了!
    OracleConnection Conn=new OracleConnection(dbconn.DbConnStr);
    OracleCommand Comm=Conn.CreateCommand();
    Comm.CommandText="select b from test where id=3";
    Conn.Open();
    OracleDataReader dr=Comm.ExecuteReader();
    if (dr.Read())
    {
    this.Literal1.Text=dr["b"].ToString();
    }
    Conn.Close();
    dr.Close();
      

  13.   

    在oracle client 和OLEDB驱动下用dataReader.GetString()可以直接读出来
    用Oracle Data Provider for .NET 也就是ODP.net做驱动时用dataReader.GetString()就不出来值了
    现在还没有解决,有没有用过ODP.net的?