在一个SQL数据库里,有A表里面存放B、C、D、E等张表的表名。a是B、C、D、E表的字段。
想通过ComboBox连接SQL数据库A表,用textbox输入a的具体值实现查询,查询内容放在DataGird里。
在MSDN中有人指教过使用存储过程可以建立查询.
可以在数据库中动态创建Sql脚本,然后执行。给你一个例子,你调用这个存储过程就行了:
存储过程:
Code SnippetCREATE PROC spExecTableQuery@TableName VARCHAR(50) -- 需要查询的表名,比如“TableX“, @FieldsName VARCHAR(300) -- 需要查询的字段列表,比如“FieldA, FieldB”ASDECLARE @Sql VARCHAR(3000)SET @Sql = 'SELECT ' + @FieldsName + 'FROM ' + @TableNameEXEC(@Sql)这个存储过程执行后将返回一个记录集,把记录集(DataTable或者DataSet)绑定到DataGrid
我想请教下怎么在C#里调用实现ComboBox连接SQL数据库A表,用textbox输入a的具体值查询
有人能给段代码研究吗 安分感激.

解决方案 »

  1.   


    SqlCommand cmd=new SqlCommand("spExecTableQuery");
    cmd.CommandType=CommandType.StoredProcedure;
    SqlParameter para=cmd.Parameters.Add("@TableName",SqlDbType.NVarChar
    );
    para.Value=....//此处取TextBox的值
    para=cmd.Parameters.Add("@FieldsName",SqlDbType.NVarChar
    );
    para.Value=....
    //执行cmd
      

  2.   

    首先你这个存储过程不行,没有条件
    应改成CREATE PROCEDURE PROC_SELECT_TABLE
    @TABLENAME NVARCHAR(30),
    @COLNAME NVARCHAR(850)='*',
    @WHERETYPE NVARCHAR(850)='WHERE 1=1'
    AS
    DECLARE @SQLSTR NVARCHAR(2000)
    SET @SQLSTR=N'SELECT '+@COLNAME+N' FROM '+ @TABLENAME+N' '+@WHERETYPEEXEC SP_EXECUTESQL @SQLSTR另外,我没看懂你写的"ComboBox连接SQL数据库A表"这句,你连接的是数据库,怎么连接表了?按着上面的思路,程序中应该这样写,具体的值你自己添进去
    SqlConncetion con=new SqlConncetion("你的连接字符串");
    con.open();
    SqlCommend cmd=new Sqlcommend("PROC_SELECT_TABLE",con);
    cmd.CommandType=CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameters("@TABLENAME","你要查询的表名"));
    cmd.Parameters.Add(new SqlParameters("@COLNAME ","你要查询的列名,有多个时以","号分隔,如果查询所有列此参数可不写"));
    cmd.Parameters.Add(new SqlParameters("@WHERETYPE ","你要查询的条件(必须以 where开台 ),如果没有条件此参数同样可以不写"));
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand=cmd;
    DataSet ds=new DataSet();
    da.Fill(ds,"tablename");