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

zjx198934 2011-01-19 10:19:39
ORACDLE服务器和TimesTen在一台电脑上! 环境已经配置好了 数据查询和插入都能同步 但是用C#代码访问的时候
能够连接并打开连接 但是在用适配器或reader读取数据的时候报异常“不支持此功能” 求解决方案! 谢谢了!
...全文
232 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmgcy 2012-02-16
  • 打赏
  • 举报
回复
楼主解决了吗?

我也遇到这个问题了。
worldtsuy 2011-05-20
  • 打赏
  • 举报
回复
谁搞定这个问题了呢, 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这个玩意不是只需要一个名字就好了的吗,郁闷
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
自己顶个!希望有经验的兄弟伙指导下!
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]

单步看看那里出错
[/Quote]

单步连接成功并打开 在adapter.fill(dataset)或 OracleDataReader.read()
抛出异常“ORA-29036: 不支持该功能”
wuyq11 2011-01-19
  • 打赏
  • 举报
回复
单步看看那里出错
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dobzhansky 的回复:]

换微软的 ado.net 驱动试试看,

是不是 odp.net 安装的有问题呢?
[/Quote]

我的ODP.NET 是装ORACLE服务器时自带安装的! ORACLE是完全安装成功了的! 开发和服务器是一台机子
Dobzhansky 2011-01-19
  • 打赏
  • 举报
回复
换微软的 ado.net 驱动试试看,

是不是 odp.net 安装的有问题呢?
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
如果使用游标查询的话 不会报错 但是无法插入和查询任何值!
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
如果我将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)
zjx198934 2011-01-19
  • 打赏
  • 举报
回复
贴下代码


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();
}
}


Dobzhansky 2011-01-19
  • 打赏
  • 举报
回复
你执行的是什么语句?

那个错误代码大泛泛了

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧