请教同行帮忙,Net中使用Oracle遇到的一个问题(急)

蓝点天尊 2006-07-21 12:00:36
我在写一个Oracle查询时其中有个嵌套查询,我在Oracle9i中能执行通过,但当我用OracleDataAdapter,查询时死活都通不过去,这个子查询语句是这样的:
SELECT * FROM (select * from mytest.cjb where chinese>70)
查询代码如下:
.....
OracleDataAdapter _objAdapter = new OracleDataAdapter(_resultSQL, _objConn);
_objAdapter.TableMappings.Add("Table", _fillTableName);
_objAdapter.MissingSchemaAction = System.Data.MissingSchemaAction.AddWithKey; _objAdapter.Fill(_table);
系统总是提示:应为标识符或带引号的标识符,
请教同行,这种嵌套查询为什么在ORACLE中能执行通过,用上面的方法在NET中却不能通过,在Net有什么需要特别主意的地方吗?
...全文
129 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
早调试过了,原因应该是这样的,我在ORCLE9i中这个语句没问题,能执行出结果,在NET中不行,应该是因为Net中的驱动程序不是orcle9i的,或是驱动程序本身有问题,这种情况我以往用JAVA的时候也遇到过,我要这种形式的SQL语句是因为我在写一个ORACLE的分布查询,要用一个三层嵌套
Knight94 2006-07-21
  • 打赏
  • 举报
回复
使用如下的语句来替换
SELECT * FROM (select * from mytest.cjb where chinese>70) as tempcjb

然后把
_objAdapter.TableMappings.Add("Table", _fillTableName);

改为
_objAdapter.TableMappings.Add("tempcjb", _fillTableName);
长江支流 2006-07-21
  • 打赏
  • 举报
回复
单步调试看看
OracleDataAdapter _objAdapter = new OracleDataAdapter(_resultSQL, _objConn);
_objAdapter.Fill(_table);
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
这个不是有没用的问题,我实际的工程中是因为要用到这种形式的子查询。我发现是这种子查询的问题,还有存储过程是肯定行的,但是,我是在写一个通用组件包,不希望依赖存储过程
Knight94 2006-07-21
  • 打赏
  • 举报
回复
确实如此,子查询没有太大作用,直接协会更方便。
fengfangfang 2006-07-21
  • 打赏
  • 举报
回复
你的子查询好像没什么用呀
select * from mytest.cjb where chinese>70
不就行了吗
bumm 2006-07-21
  • 打赏
  • 举报
回复
OleDbConnection con = new OleDbConnection(this.strcon);
string sql = "select * from TableName";
OleDbDataAdapter oda = new OleDbDataAdapter(sql,con);
DataSet ds = new DataSet();
oda.Fill(ds);
fengfangfang 2006-07-21
  • 打赏
  • 举报
回复
改成存储过程或视图试试
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
我一直在看最新情况呀,怎么就没人帮忙呢?UP
蓝点天尊 2006-07-21
  • 打赏
  • 举报
回复
啊就没人在Net中用ORACLE时遇到过这种问题吗

111,092

社区成员

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

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

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