declare @tbname varchar(10),@colid int,@sql varchar(1000),@name varchar(10) set @sql='select @name=name from syscolumns where id=object_id('+@tbname+') and colid='+rtrim(@colid) exec sp_executesql @sql,N'@name varchar(10) output',@name output exec('select '+@name+' from tb')
修正了一下: create table tb(id int,name varchar(100)) insert tb values(1,'sb') insert tb values(1,'sx') insert tb values(1,'sn') go declare @tbname varchar(10),@colid int,@sql nvarchar(1000),@name varchar(10) select @tbname='tb',@colid=2 set @sql='select @name=name from syscolumns where id=object_id('''+@tbname+''') and colid='+rtrim(@colid) exec sp_executesql @sql,N'@name varchar(10) output',@name output exec('select '+@name+' from '+@tbname) /* name ---------------------------------------------------------------------------------------------------- sb sx sn */
你可以先得到全部的数据源:
select * from 表
然后把数据源赋给一个dataset ds=new dataset();
如果你知道的是列的序号,假如是10:
则:
arraylist al=new arraylist();
for(int i=0;i<ds.rows.count;i++)
{
string value=ds.table[0].rows[i][10].tostring();
al.add(value);
}如果你知道的是列的名字,假如是name:
则:
arraylist al=new arraylist();
for(int i=0;i<ds.rows.count;i++)
{
string value=ds.table[0].rows[i]["name"].tostring();
al.add(value);
}
set @sql='select @name=name from syscolumns where id=object_id('+@tbname+') and colid='+rtrim(@colid)
exec sp_executesql @sql,N'@name varchar(10) output',@name output
exec('select '+@name+' from tb')
create table tb(id int,name varchar(100))
insert tb values(1,'sb')
insert tb values(1,'sx')
insert tb values(1,'sn')
go
declare @tbname varchar(10),@colid int,@sql nvarchar(1000),@name varchar(10)
select @tbname='tb',@colid=2
set @sql='select @name=name from syscolumns where id=object_id('''+@tbname+''') and colid='+rtrim(@colid)
exec sp_executesql @sql,N'@name varchar(10) output',@name output
exec('select '+@name+' from '+@tbname)
/*
name
----------------------------------------------------------------------------------------------------
sb
sx
sn
*/