ADO.net中表名能不能做为参数传入sql语句?

netwy 2005-06-07 04:53:00
我有一个查询,想将表名做为参数传入sql语句中,但我测试好像不行
OracleConnection con=new OracleConnection();
con.ConnectionString="user id=his2005;data source=twmis;password=centaurus";
con.Open();
OracleCommand cmd=new OracleCommand("select * from @T_codex",con);
cmd.CommandType=CommandType.Text;
OracleParameter p=new OracleParameter();
p.ParameterName="@T_codex";
p.Value="T_codex";
cmd.Parameters.Add(p);
OracleDataAdapter ad=new OracleDataAdapter();
ad.SelectCommand=cmd;
DataSet ds=new DataSet();
try
{
ad.Fill(ds);
}
catch(Exception ee)
{
MessageBox.Show(ee.Message);
}
错误是表名无效,我不想用拼sql语句的办法,各位有其他方法吗?

不要这样:"select * from "+tableName
...全文
183 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
itmingong 2005-06-08
  • 打赏
  • 举报
回复

学习
winterice 2005-06-08
  • 打赏
  • 举报
回复
建议用存储过程实现吧,一般要传参数最好用存储过程实现:)
liukanghui 2005-06-08
  • 打赏
  • 举报
回复
带参数的sql语句
declare @tableName varchar(30),@sql varchar(1000)
set @tableName ='表1'
set @sql='select * from '+@tableName+' where 条件..'

exec @sql
stpangpang 2005-06-08
  • 打赏
  • 举报
回复
晕,怎么发成这样的啊
后面的
type
open ds

不要
stpangpang 2005-06-08
  • 打赏
  • 举报
回复
拼写sql语句

象这样

type DataSet is REF CURSOR ;

procedure aa(ptableName varchar(100), ds out DataSet)
is
begin
strSql := '.....' ;--你的sql语句
open ds for strSql;
end aa;


type
open ds
icedut 2005-06-08
  • 打赏
  • 举报
回复
在sql server 里面是不行的,不知道oracle里面是否可以
select * from @T_codex
一般都要拼写sql 语句

不明白楼住为什么非要这么做

一般sql里面 ,还是要拼写sql 然后用exec 的

zhongwanli 2005-06-08
  • 打赏
  • 举报
回复
没有办法,只能用拼写 SQL 了
niunj 2005-06-08
  • 打赏
  • 举报
回复
如果你用SqlParameter的方式想把表名传入,那么很遗憾,这样是不可以的,当然,如果你用一个静态变量的方式把表名存储起来,然后把sql拼接,那时可行的。
zdleek 2005-06-07
  • 打赏
  • 举报
回复
或许可以写存储过程来做,如果作为参数真的不行的话,也没有什么好办法
MyLf 2005-06-07
  • 打赏
  • 举报
回复
好像不行.不过我想你也没有必要这样去做啊

UP
zdleek 2005-06-07
  • 打赏
  • 举报
回复
没试过把表名作为sql语句的参数,通常我都是拼sql语句
netwy 2005-06-07
  • 打赏
  • 举报
回复
谢谢各位参与
lwplwp123 2005-06-07
  • 打赏
  • 举报
回复
你那样做法跟拼sql语句好像没什么区别呀。
要不你可以搞一个存储过程来做
不过本质还是拼sql语句。
3tzjq 2005-06-07
  • 打赏
  • 举报
回复
string tablename ="T_codex";
if(Condition)//你此举的目的无非是想动态的Fill数据表
{
tablename = "T_....1"
}
elseif(....)
{
tablename = "T_....2"
}
OracleCommand cmd=new OracleCommand(string.Format("select * from {0}",tablename),con);
//...
  • 打赏
  • 举报
回复
好像不成
mouse0987 2005-06-07
  • 打赏
  • 举报
回复
请点这里,查看详细情况

http://www.lz.net.cn/bbs/X_AdvCom_Get.asp?UserID=7342
LoveCherry 2005-06-07
  • 打赏
  • 举报
回复
据我所知恐怕只有拼sql语句后执行

111,125

社区成员

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

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

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