怎么在select语句里面把查询列名设置为变量

loen19 2011-08-22 10:54:15
请教各位大虾,原来select查询语句中把要查询的列名设置为数据库表中的固定列名来查询数据,现在想把里面要查询的列名设置为变量,在前面先定义两个变量,通过给它们赋不同的值,来改变select语句中要查询的列名....
本人初学C#,资历尚浅,不能解决这个问题,希望各位高手详细指点一二,不甚感激!
下面是程序代码





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.Windows.Forms.DataVisualization.Charting;

namespace chart绑定多个数据源1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
declare
//string sf = FAC_SERIAL;
OracleConnection thisConnection = new OracleConnection("Data Source=192.168.0.134:1521/dps;User ID=device;Password=device;Unicode=True;");
//string selectquery="SELECT "
DataSet thisDataSet = new DataSet();
OracleDataAdapter facAdapter = new OracleDataAdapter(
"SELECT @X:=FAC_ID,FAC_SERIAL FROM EMS_FAC_INFO WHERE FAC_ID<210000100 AND FAC_ID>210000034 order by FAC_ID", thisConnection);//用WHERE实现数据筛选
OracleDataAdapter trAdapter = new OracleDataAdapter(
"SELECT * FROM EMS_TR_DEVICE order by FAC_ID", thisConnection);
OracleDataAdapter brkAdapter = new OracleDataAdapter(
"SELECT * FROM accmng.liureportfault", thisConnection);

facAdapter.Fill(thisDataSet, "EMS_FAC_INFO");
trAdapter.Fill(thisDataSet, "TR_DEVICE");
brkAdapter.Fill(thisDataSet, "accmng.liureportfault");

DataView dv = new DataView(thisDataSet.Tables[0]);
dv.RowFilter = "FAC_ID<210000047";//设置要显示的字段范围
DataView dt = new DataView(thisDataSet.Tables[1]);
dt.RowFilter = "FAC_ID<210000047";

DataView dv1=new DataView(thisDataSet.Tables[2]);

Series Series1 = new Series();
Series1.ChartType = SeriesChartType.Line;
chart1.Series.Add(Series1);
Series Series2 = new Series();
Series2.ChartType = SeriesChartType.Line;
chart1.Series.Add(Series2);

chart1.Series["Series1"].Points.DataBindXY(dv,"FAC_ID",dv,"FAC_SERIAL");
chart1.Series["Series2"].Points.DataBindXY(dt, "FAC_ID", dt, "FIXLOSS");
chart1.Dock = DockStyle.Fill;
chart1.Titles.Add("多个数据源的绑定,数据的筛选、排序");
Series1.IsVisibleInLegend = false;

}

}
}
...全文
839 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanwza 2011-08-29
  • 打赏
  • 举报
回复
学习....
loen19 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ssp2009 的回复:]

引用 3 楼 loen19 的回复:
大虾详细点啊!我是个菜鸟,都不知道什么是动态SQL,能不能附上点代码...文字说的我不大明白
我写的代码还不够清楚吗?你最好写个存储过程,传参数进去
SQL code
create proc p_name (
@str varchar(100)--列名用逗号隔开
)
as
begin
exec('select '+@str+……
[/Quote]
varchar(100)那句提示出错
geniuswjt 2011-08-23
  • 打赏
  • 举报
回复
这是sql,我勒个去![Quote=引用 7 楼 loen19 的回复:]
我怎么感觉不是c#啊,倒像VB!别扔板砖......
[/Quote]
loen19 2011-08-22
  • 打赏
  • 举报
回复
我怎么感觉不是c#啊,倒像VB!别扔板砖......
快溜 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 loen19 的回复:]
大虾详细点啊!我是个菜鸟,都不知道什么是动态SQL,能不能附上点代码...文字说的我不大明白
[/Quote]我写的代码还不够清楚吗?你最好写个存储过程,传参数进去
create proc p_name (
@str varchar(100)--列名用逗号隔开
)
as
begin
exec('select '+@str+' from tb')
end
exec p_name 'col1,col2,col3'
happytonice 2011-08-22
  • 打赏
  • 举报
回复
@sql=‘select '+ @f1+','+@f2 +'from db’
happytonice 2011-08-22
  • 打赏
  • 举报
回复
sql=‘select '+ @f1+','+@f2 +'from db’
loen19 2011-08-22
  • 打赏
  • 举报
回复
大虾详细点啊!我是个菜鸟,都不知道什么是动态SQL,能不能附上点代码...文字说的我不大明白
快溜 2011-08-22
  • 打赏
  • 举报
回复
列名做变量要动态执行
exec('select '+@col1+','+@col2+' from tb')
geniuswjt 2011-08-22
  • 打赏
  • 举报
回复
你放到sql存储过程里我能告诉你...

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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