当前位置: 代码迷 >> Sql Server >> 请问一句sql语句 select * from database1 where id in (select id from 这里是个datatable如何写呢)
  详细解决方案

请问一句sql语句 select * from database1 where id in (select id from 这里是个datatable如何写呢)

热度:27   发布时间:2016-04-24 10:29:53.0
请教一句sql语句 select * from database1 where id in (select id from 这里是个datatable怎么写呢)
 if (!Page.IsPostBack)
        {
            List<int> gouwuche = (List<int>)Session["gouwuche"];
            DataTable dt = new DataTable();
            
            dt.Columns.Add("id", typeof(int));

            for (int i = 0; i < gouwuche.Count; i++)
            {
                DataRow dr = dt.NewRow();
                dr["id"] = gouwuche[i].ToString();
                dt.Rows.Add(dr);
            }
            SqlConnection con = new SqlConnection(_conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "select * from database1 where id in (select id from dt)";
          // dt为一从session中获得的 产品id 集和的datatable 
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt2 = new DataTable();
            using (sda)
            {
                sda.Fill(dt2);
            }
            Repeater2.DataSource = dt2;
            Repeater2.DataBind();
           


            
        }


'dt' 附近有语法错误。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.SqlClient.SqlException: 'dt' 附近有语法错误。


请问 这个地方应该怎么写呢?
------解决方案--------------------
楼主你这是何苦呢???

  for (int i = 0; i < gouwuche.Count; i++)
            {
                DataRow dr = dt.NewRow();
                dr["id"] = gouwuche[i].ToString();
//这不是你循环生成的ID吗?
//你干嘛前面生成一个datatable,后面再去datatable中取数据
//要简单的话,直接生成一个字符串算了
比如你查询是select * from database1 where id in (1,2,3,4,5)
你需要的是生成红色这一部分,然后拼凑成一个sql
                dt.Rows.Add(dr);
            }
            SqlConnection con = new SqlConnection(_conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "select * from database1 where id in (select id from dt)";
          // dt为一从session中获得的 产品id 集和的datatable 
------解决方案--------------------
  StringBuilder strbuilder = new StringBuilder();
            for (int i = 0; i < gouwuche.Count; i++)
            {
                strbuilder.Append("'").Append(gouwuche[i].ToString()).Append("'").Append(",");//循环生成'X',这种格式
            }

            //然后去掉最后一个逗号
            strbuilder = strbuilder.ToString().TrimEnd(",");
  相关解决方案