代码如下
if (!Page.IsPostBack)
{
string productID;
productID = Request.QueryString["id"].ToString();
Hashtable myCar;
if (Session["myCar"] == null)
{
myCar = new Hashtable();
}
else
{
myCar = (Hashtable)Session["myCar"];
}
if (myCar.Contains(productID))
{
myCar[productID] = (int)myCar[productID] + 1;
}
else
{
myCar.Add(productID, 1);
}
Session["myCar"] = myCar;
string strProducts;
strProducts = "('";
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";
string strSql;
strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;
OleDbDataAdapter myAdapt = new OleDbDataAdapter(strSql, db.connstring);
DataSet myDS = new DataSet();
myAdapt.Fill(myDS, "prdocut");
DataTable myTable;
//myDS.Tables["tb_product"].DefaultView;
myTable = myDS.Tables["prdocut"];
if (myTable.Rows.Count == 0)
{
Response.Write("aa");
}
DataColumn myColumn = new DataColumn();
myColumn.ColumnName = "fld_num";
myColumn.DataType = System.Type.GetType("System.Int32");
myColumn.DefaultValue = 0;
myTable.Columns.Add(myColumn);
if (myTable.Rows.Count == 0)
{
GridView1.Visible = false;
}
else
{
GridView1.Visible = true;
}
DataColumn[] Keys = new DataColumn[1]; ;
Keys[0] = myTable.Columns["pc_id"];
myTable.PrimaryKey = Keys;
foreach (string x in myCar.Keys)
{
myTable.Rows.Find(x)["fld_num"] = (int)myCar[x];
}
GridView1.DataSource = myTable;
GridView1.DataBind();
}
这里的strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;
pc_id 可不可以 弄成自动编号的 我本来是自动编号 可是出错 我只能改成文本的了这里的in 是什么意思
是查询 所有 strProducts 里的数据吗
strProducts = "('";
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";这里的
strProducts = "('";
strProducts += "')";
又有什么用 是不是字符串 要这样加 如果是数字应该怎么改 没了自动编号 很不方便请高手 教我 把pc_id改回 自动编号不出错的方法
if (!Page.IsPostBack)
{
string productID;
productID = Request.QueryString["id"].ToString();
Hashtable myCar;
if (Session["myCar"] == null)
{
myCar = new Hashtable();
}
else
{
myCar = (Hashtable)Session["myCar"];
}
if (myCar.Contains(productID))
{
myCar[productID] = (int)myCar[productID] + 1;
}
else
{
myCar.Add(productID, 1);
}
Session["myCar"] = myCar;
string strProducts;
strProducts = "('";
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";
string strSql;
strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;
OleDbDataAdapter myAdapt = new OleDbDataAdapter(strSql, db.connstring);
DataSet myDS = new DataSet();
myAdapt.Fill(myDS, "prdocut");
DataTable myTable;
//myDS.Tables["tb_product"].DefaultView;
myTable = myDS.Tables["prdocut"];
if (myTable.Rows.Count == 0)
{
Response.Write("aa");
}
DataColumn myColumn = new DataColumn();
myColumn.ColumnName = "fld_num";
myColumn.DataType = System.Type.GetType("System.Int32");
myColumn.DefaultValue = 0;
myTable.Columns.Add(myColumn);
if (myTable.Rows.Count == 0)
{
GridView1.Visible = false;
}
else
{
GridView1.Visible = true;
}
DataColumn[] Keys = new DataColumn[1]; ;
Keys[0] = myTable.Columns["pc_id"];
myTable.PrimaryKey = Keys;
foreach (string x in myCar.Keys)
{
myTable.Rows.Find(x)["fld_num"] = (int)myCar[x];
}
GridView1.DataSource = myTable;
GridView1.DataBind();
}
这里的strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;
pc_id 可不可以 弄成自动编号的 我本来是自动编号 可是出错 我只能改成文本的了这里的in 是什么意思
是查询 所有 strProducts 里的数据吗
strProducts = "('";
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";这里的
strProducts = "('";
strProducts += "')";
又有什么用 是不是字符串 要这样加 如果是数字应该怎么改 没了自动编号 很不方便请高手 教我 把pc_id改回 自动编号不出错的方法
解决方案 »
- A介面两个按钮,都可以调用同一个密码介面B,密码正确后怎么知道对应哪个按钮(新人)
- 寻高手,关于webBroser,与论坛自动发帖有关
- 域名查询系统
- C#如何读取数据文件?
- 大家有没有见过类似腾讯rtx的软件?
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
- 寻找高手,用C#代码控制POS打印时,是否打开钱箱问题?
- 在C#里面,我获取到一个结构(struct)名称,但他返回是string类型的,有没有办法将他转化为原来的struct 型??
- 急!!!我在运行C#色时候总遇到同一个错误 请各位大哥帮帮忙!!!!
- Web Service配置的一些问题(急!!)
- 打包好的程序安装简易数据库的问题
- [WPF] 如何使Canvas透明?
2、strProducts += "')";:拼接sql字符串
3、设置自动编号 ALTER TABLE strProducts ALTER COLUMN pc_id(IDENTITY(1,1))(前提是 表里没有数据且字段为数据类型)建议多看看书(你提的问题都是很基础的东西)
所以 楼主的
strProducts = "('";
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";这里的
strProducts = "('";
strProducts += "')";
意思很明显啦!而pc_id 如果改成自动编号的话后面的strProducts应做相应修改
请楼主试试
http://msdn.microsoft.com/zh-cn/library/ms177682.aspx
如果pc_id是数字类型,则后面括号中的id都不要加单引号:
string strProducts;
strProducts = "(
'";foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "
','";}
strProducts += "
')";这句:
myTable.Rows.Find(x)["fld_num"] = (int)myCar[x];
改成:
myTable.Rows.Find(Convert.ToInt32(x))["fld_num"] = (int)myCar[x];
2)strProducts = "('";
strProducts += "')"值取出数组里面的数组后一什么形式显示;这里加这句话指显示为字符串(奔驰,宝马,保时捷)这样的形式
3)strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;你数据源里面的数据怎么排列的我不晓得怎么写。
foreach (string x in myCar.Keys)
{
strProducts = strProducts + x + "','";
}
strProducts += "')";拼接查询条件如:myCar.Keys 有:1,2,3
==> strProducts="('1,2,3,')"; 这个方式会多一个“,”
strSql = "select pc_id,pc_name,pc_price from product where pc_id in " + strProducts;
==》
strSql = "select pc_id,pc_name,pc_price from product where pc_id in ('1,2,3,')" ;如果pc_id 是自动编号,上面 不能拼接 ‘’ 这对单引号!还有拼接最好用StringBuilderStringBuilder sb =new StringBuilder();
foreach (string x in myCar.Keys)
{
if(sb.Length>0){
sb.Append(",");
}
sb.Append(x);
}
strSql = "select pc_id,pc_name,pc_price from product ";
if(sb.Length>0){
strSql += " where pc_id in ("+sb.ToString() +")";
}