本帖最后由 cngothic 于 2013-12-10 15:07:33 编辑

解决方案 »

  1.   

    在 sp_executesql  这个中,不能把表名、列名,做成变量的,会报错。建议你直接用exec来做吧
      

  2.   

    我是通过NET程序传过来的。之后监控到代码如上。表名不能传参的话。我只好拼接SQL语句了。
    刚才也测试了NET程序把表名参数去除正常运行了。
    我的代码如下,我无法设置exec,或我改用存储过程:            SqlParameter[] parm = new SqlParameter[2]{  
                        new SqlParameter("@table", SqlDbType.VarChar, 20),  
                        new SqlParameter("@partno", SqlDbType.VarChar, 30),  
                };
                parm[0].Value = "st" ;
                parm[0].Value = partno.Trim();
                Console.WriteLine(partno.Trim());
                DataSet ds = SqlHelper.ExecuteDataSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, parm);
                DataTable dt = ds.Tables[0];
                return dt;
      

  3.   

    我的代码如下,我无法设置exec,或我改用存储过程:            SqlParameter[] parm = new SqlParameter[2]{  
                        new SqlParameter("@table", SqlDbType.VarChar, 20),  
                        new SqlParameter("@partno", SqlDbType.VarChar, 30),  
                };
                parm[0].Value = "st" ;
                parm[0].Value = partno.Trim();
                Console.WriteLine(partno.Trim());
                DataSet ds = SqlHelper.ExecuteDataSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, parm);
                DataTable dt = ds.Tables[0];
                return dt;对看样子,就只能改成存储过程了,其实参数什么的都一样,只不过是不再调用sp_executesql了,而是你自己的写的存储过程,然后里面拼接语句,然后用exec 来执行