using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;public partial class vi: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string idd = Request.QueryString["ID"];
        //连接
        string dbname = System.Web.HttpContext.Current.Server.MapPath("App_Data/dbdb.accdb");
        string connStr = "PROVIDER=microsoft.ACE.oledb.12.0;Data Source=" + dbname;
        OleDbConnection conn = new OleDbConnection(connStr);
        conn.Open();
        //控制
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select * from chanpin where ID='"+idd+"'";
        //数据返回
        OleDbDataReader mydata;
        mydata = cmd.ExecuteReader(); -----------------     标准表达式中数据类型不匹配。
        while (mydata.Read())
        {
            Label1.Text = mydata["cname"].ToString();
        }
    }
}

解决方案 »

  1.   

    那就试试把两个单引号去掉,你的idd可能是int型!!
    int  idd = Convert.ToInt16(Request.QueryString["ID"]); 
    ........
    cmd.CommandText = "select * from chanpin where ID="+idd;或者你的idd是String型的
    string idd = Request.QueryString["ID"].ToString(); 
    .....
    cmd.CommandText = "select * from chanpin where ID='"+idd+"'"; 
      

  2.   

    应该是你的ID是int类型,所以要把‘去掉改成cmd.CommandText = "select * from chanpin where ID="+idd;