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(",");