当前位置:编程学习 > C#/ASP.NET >>

【99-在线等】顶者有分 ODP.NET 访问TimesTen 能够连接上 但是报异常“不支持该功能”!

ORACDLE服务器和TimesTen在一台电脑上! 环境已经配置好了 数据查询和插入都能同步 但是用C#代码访问的时候
能够连接并打开连接 但是在用适配器或reader读取数据的时候报异常“不支持此功能” 求解决方案! 谢谢了! --------------------编程问答-------------------- 单步看看那里出错 --------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
单步看看那里出错


单步连接成功并打开  在adapter.fill(dataset)或 OracleDataReader.read()
 抛出异常“ORA-29036: 不支持该功能”
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 自己顶个!希望有经验的兄弟伙指导下! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 你执行的是什么语句?

那个错误代码大泛泛了 --------------------编程问答-------------------- 贴下代码


 void GetData()
        {
            string tnsName = "(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME = repdb1CS_1121)(SERVER = timesten_client)))";

 Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection("User Id=oratt;Password=timesten;Data Source=" + tnsName + ";Statement Cache Size=0;");

           try
            {
                con.Open();
                Oracle.DataAccess.Client.OracleCommand cmd = new OracleCommand("select EMPNO from oratt.bonus;", con);
                cmd.CommandType = CommandType.Text;
                
                DataTable ds = new DataTable();
                OracleDataAdapter da = new OracleDataAdapter(cmd);
            
                da.Fill(ds);//报错
                //OracleDataReader rdr = cmd.ExecuteReader();
                //while (rdr.Read())
                //{
                //    int f1 = int.Parse(rdr[0].ToString());
                //    int f2 = int.Parse(rdr[1].ToString());
                //    Console.WriteLine(f1 + " " + f2);
                //}

                con.Close();
            

            for (int i = 0; i < ds.Rows.Count; i++)
            {
                DataRow dr = ds.Rows[i];
                int f1 = int.Parse(dr[0].ToString());
                int f2 = int.Parse(dr[1].ToString());
                int f3 = int.Parse(dr[2].ToString());
                MessageBox.Show(f1.ToString() + " " + f2.ToString() + " " + f3.ToString());
            }

        }
        catch (OracleException e)
          {
            string ee = e.ToString();
          }
        }


--------------------编程问答-------------------- 如果我将SQL语句改成

begin select EMPNO from oratt.bonus; end;


就会报:
Oracle.DataAccess.Client.OracleException ORA-57000: TT8503: ORA-06550: line 1, column 7:
PLS-00428: an INTO clause is expected in this SELECT statement    在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
   在 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
   在 Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
   在 Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) --------------------编程问答-------------------- 如果使用游标查询的话 不会报错 但是无法插入和查询任何值! --------------------编程问答-------------------- 换微软的 ado.net 驱动试试看,

是不是 odp.net 安装的有问题呢? --------------------编程问答--------------------
引用 12 楼 dobzhansky 的回复:
换微软的 ado.net 驱动试试看,

是不是 odp.net 安装的有问题呢?


我的ODP.NET 是装ORACLE服务器时自带安装的! ORACLE是完全安装成功了的! 开发和服务器是一台机子 --------------------编程问答-------------------- --------------------编程问答-------------------- 谁搞定这个问题了呢,   string tnsName = "(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME = repdb1CS_1121)(SERVER = timesten_client)))";

 Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection("User Id=oratt;Password=timesten;Data Source=" + tnsName + ";Statement Cache Size=0;");

           try
            {
                con.Open();
open老是不通过,而且不明白为什么要用户ID和密码,DSN这个玩意不是只需要一个名字就好了的吗,郁闷
--------------------编程问答-------------------- 楼主解决了吗?

我也遇到这个问题了。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,