为C#查询出的字段添加别名,别名在另外一个数据表中存放
刚开始学C#,想做一个winform程序,用dataGridView控件绑定数据库中的A001A001表,但是这个表中的所有字段都是类似于A0101这样的字段,显示出来看...
刚开始学C#,想做一个winform程序,用dataGridView控件绑定数据库中的A001A001表,但是这个表中的所有字段都是类似于A0101这样的字段,显示出来看不太明白,而A001A001中的所有字段都有一个中文的别名,这些别名在sr_sourceitem中存放,fieldname是A0101等所在的字段,description是对应的中文描述。
我做了一个存储过程,实现了这样的查询效果:
declare @str varchar(800),@tName varchar(30),@bz int
set @str=' '
if not (select object_id('Tempdb..#temp')) is null
drop table #temp
select IDENTITY(int,1,1) ID,b.fieldname+' '+s.description+',' miaoshu INTO #temp from sr_builtitem b join sr_sourceitem s
on b.fieldname=s.fieldname and b.setid='A001' and b.Typeid='A001' and s.flag<>'0000000000' order by b.ordersame
WHILE EXISTS(select ID from #temp)
begin
SET ROWCOUNT 1
select @bz=ID,@tName=miaoshu from #temp
SET ROWCOUNT 0
delete #temp where ID=@bz
select @str=@str+@tName
end
exec ('select'+@str+'b0110 单位 from a001a001')
但是不知道如何把这样的查询结果绑定到控件里显示;
或者能否把dataGridView的数据绑定A001A001,而其列名绑定sr_sourceitem的description。
纠结了一上午了,麻烦高手帮个忙,谢谢!
在查询的时候起别名的形式就不要说了,我很清楚,那个实现不了我的要求。 展开
我做了一个存储过程,实现了这样的查询效果:
declare @str varchar(800),@tName varchar(30),@bz int
set @str=' '
if not (select object_id('Tempdb..#temp')) is null
drop table #temp
select IDENTITY(int,1,1) ID,b.fieldname+' '+s.description+',' miaoshu INTO #temp from sr_builtitem b join sr_sourceitem s
on b.fieldname=s.fieldname and b.setid='A001' and b.Typeid='A001' and s.flag<>'0000000000' order by b.ordersame
WHILE EXISTS(select ID from #temp)
begin
SET ROWCOUNT 1
select @bz=ID,@tName=miaoshu from #temp
SET ROWCOUNT 0
delete #temp where ID=@bz
select @str=@str+@tName
end
exec ('select'+@str+'b0110 单位 from a001a001')
但是不知道如何把这样的查询结果绑定到控件里显示;
或者能否把dataGridView的数据绑定A001A001,而其列名绑定sr_sourceitem的description。
纠结了一上午了,麻烦高手帮个忙,谢谢!
在查询的时候起别名的形式就不要说了,我很清楚,那个实现不了我的要求。 展开
展开全部
用存储过程,直接放入dataset中
然后绑定到dataGridView
SqlConnection conn = new SqlConnection(“连接字符串语句”);
cmd = new SqlCommand("exec 存储过程名", conn);
cmd.Parameters.AddRange("添加存储过程参数,没有就算了");
//这句就是说明你是存储过程
cmd.CommandType = CommandType.StoredProcedure;
da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
return ds;
然后绑定到dataGridView
SqlConnection conn = new SqlConnection(“连接字符串语句”);
cmd = new SqlCommand("exec 存储过程名", conn);
cmd.Parameters.AddRange("添加存储过程参数,没有就算了");
//这句就是说明你是存储过程
cmd.CommandType = CommandType.StoredProcedure;
da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
return ds;
更多追问追答
追问
不好意思啊,我做的是winform,因为很菜,不知道如何手动绑定数据源。通过控件自带的“datagridview任务”可以手动选择数据源,其中有存储过程,但是选定后调试不出数据;我用的是VS2008,存储过程先写死了参数,不需要发送参数;
追答
那你这么写
在button1的onclick事件中这么写
DataSet ds=Getds();
this.dataGridView.DataSource=ds.Tables[0];
this.dataGridView.DataBind();
下面是获得ds的方法
public DataSet Getds()
{
SqlConnection conn = new SqlConnection(“连接字符串语句”);
cmd = new SqlCommand("exec 存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
return ds;
}
你试试
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询