string strCnn="server=kevin;database=BookStore;uid='sa';pwd=";
string nCustID=Request["CustID"];
SqlConnection sqlCnn=new SqlConnection(strCnn); string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID; SqlDataAdapter sqlDA=new SqlDataAdapter(sSql,sqlCnn);
DataSet bsDataSet=new DataSet();
sqlDA.Fill(bsDataSet,"OrderDetail");
DataTable dtOrder=bsDataSet.Tables["OrderDetail"]; DataGrid1.DataSource=dtOrder;
DataGrid1.DataBind();
错误信息是: 第 1 行: 'a' 附近有语法错误。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: 'a' 附近有语法错误。源错误: 
行 44:  SqlDataAdapter sqlDA=new SqlDataAdapter(sSql,sqlCnn);
行 45:  DataSet bsDataSet=new DataSet();
行 46:  sqlDA.Fill(bsDataSet,"OrderDetail");
行 47:  DataTable dtOrder=bsDataSet.Tables["OrderDetail"];源文件: c:\inetpub\wwwroot\shaolin\cashdesk.aspx.cs    行: 46 
 
 

解决方案 »

  1.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,";sSql+="OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and";sSql+=+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
      

  2.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,";sSql+="OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and";sSql+=" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
      

  3.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,";
    sSql+="OrderDetail b,Books c,Publishers d";
    sSql+="where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and";
    sSql+=" c.Pub_ID=d.Pub_ID and a.Cust_ID='"+nCustID+"'";
      

  4.   

    ywj41(虾米) ( ) 我有  using System.Data.Sqlclient;
      

  5.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
    把你上面这些+号两边的都加个空格。string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a, " + " OrderDetail b,Books c,Publishers d " + " where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and " + "  c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
      

  6.   

    加了 sqlCnn.Open()
     还不行
      

  7.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,OrderDetail b,Books c,Publishers d where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID.tostring;
      

  8.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,";sSql+="OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and";sSql+=+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;这样还是同样的错误提示
      

  9.   

    xcz1943(小钊) ( 我的nCustID已经申明为string了阿string nCustID=Request["CustID"];
      

  10.   

    Tom_Real() 在where前加空格后出现的问题是:   第 1 行: '=' 附近有语法错误。
      

  11.   

    把SQL语句放到数据库执行一下看看,应该是语法错误
      

  12.   

    ……b.Book_ID=c.Book_ID and"+" 
    and 后面少空格
      

  13.   

    and与后面的c.Pub_ID连在一起了
      

  14.   

    select a.*,b.*,c.*,d.Pub_Name from Orders a, OrderDetail b,Books c,Publishers d where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and c.Pub_ID=d.Pub_ID ;我这样在SQL中试试呢,没有问题。   ????
      

  15.   

    and与后面的c.Pub_ID连在一起了还是不行??
      

  16.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;Response.Write(sSql);你打印出来或是跟踪一下看看。看SQL是什么?
      

  17.   

    是不是你的:Request["CustID"];没有得到值呀!
      

  18.   

    第 1 行: '=' 附近有语法错误。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '=' 附近有语法错误。源错误: 
    行 49:  SqlDataAdapter sqlDA=new SqlDataAdapter(sSql,sqlCnn);
    行 50:  DataSet bsDataSet=new DataSet();
    行 51:  sqlDA.Fill(bsDataSet,"OrderDetail");
    行 52:  DataTable dtOrder=bsDataSet.Tables["OrderDetail"];
    行 53: 
     源文件: c:\inetpub\wwwroot\shaolin\cashdesk.aspx.cs    行: 51 
      

  19.   

    你提醒了我,我的Request["CustID"]是从上一个页面得值的,你看看
    int nBookID=Convert.ToInt32(e.Item.Cells[0].Text);
    DataTable dtShopCart=(DataTable)Session["dtShopCart"];
    DataRow rowFound=dtShopCart.Rows.Find(nBookID);
    rowFound.Delete();
    dtShopCart.AcceptChanges(); DataGrid1.DataSource=dtShopCart;
    DataGrid1.DataBind();
    if(dtShopCart.Rows.Count<1)
    Label_Msg.Text="您的购物车是空的!";
    } private void Bt_CashDesk_Click(object sender, System.EventArgs e)
    {
    DataTable dtShopCart=(DataTable)Session["dtShopCart"];
    if(dtShopCart.Rows.Count<1)
    {
    Label_Msg.Text="请你选择好书籍之后再去收银台!";
    return;
    }
    decimal decTotal=0;
    for(int i=0;i<dtShopCart.Rows.Count;i++)
    decTotal+=(decimal)dtShopCart.Rows[i]["SellPrice"]*(int)dtShopCart.Rows[i]["BuyNum"];
    DateTime dtOrderDate=DateTime.Now;
    string sSql="Insert into Orders(Cust_ID,Order_Date,Order_SumMoney,Order_Status) values(@CustId,@OrderDate,@SumMoney,1)";
    SqlConnection sqlCnn=new SqlConnection("server=kevin;database=BookStore;uid='sa';pwd=");
    sqlCnn.Open();
    SqlCommand sqlCmd=new SqlCommand(sSql,sqlCnn);

    sqlCmd.CommandType=CommandType.Text;

    sqlCmd.Parameters.Add("@CustId",SqlDbType.VarChar,20);
    sqlCmd.Parameters.Add("@OrderDate",SqlDbType.DateTime,8);
    sqlCmd.Parameters.Add("@SumMoney",SqlDbType.Decimal,9);

    sqlCmd.Parameters["@CustId"].Value=Session["UserID"].ToString();
    sqlCmd.Parameters["@OrderDate"].Value=dtOrderDate;
    sqlCmd.Parameters["@SumMoney"].Value=decTotal;



        sqlCmd.ExecuteNonQuery();
    sqlCnn.Close();

    dtShopCart.Clear();
    Response.Redirect("./CashDesk.aspx? Cust_ID=@CustId");
      

  20.   

    select a.*,b.*,c.*,d.Pub_Name from Orders a,
                     OrderDetail b,Books c,Publishers d 
    where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and  c.Pub_ID=d.Pub_ID and a.Cust_ID='" + 要查找的编号 + "'
      

  21.   

    Response.Redirect("./CashDesk.aspx? Cust_ID=" + @CustId);
      

  22.   

    ?后好像还多了个空格,改成这样的:
    Response.Redirect("./CashDesk.aspx?Cust_ID=" + @CustId);
      

  23.   

    出现了:  
    c:\inetpub\wwwroot\Shaolin\ShoppingCart.aspx.cs(184): 名称“CustId”在类或命名空间“Shaolin.ShopCart”中不存在我的是 ShoppingCart阿
      

  24.   

    我把@CustId  换位Session["UserID"].ToString(),还是出现   在=附近出错
      

  25.   

    ,Publishers d"+"where 
    这有加空格么?
    这些sql语句调试,你设个断点,然后再拷贝到查询分析里调试下就可以了啊.
      

  26.   

    各位大虾,应该是CustID的传递有误,因为我试着把这个变量换成一个常量'admin'就没有错误了,大家帮我解决啊 。
      

  27.   

    这些sql语句调试,很基本的,调试这些是基本常识呀
      

  28.   

    你跟踪一下,看最终的SQL是什么。
      

  29.   

    到底这个参数应该怎么传递阿,从shoppingcart.aspx到cashdesk.aspx
      

  30.   

    不是SQL语句的问题了,查出了,应该是CustID的问题
    因为我换了一个常量就没有问题了
      

  31.   

    Session["UserID"].ToString()你能保证这个UserID在Session里一定存在吗?你每修改后编译一次程序。Session里所有的值都会清空的。
      

  32.   

    shoppingcart.aspxprivate void Bt_CashDesk_Click(object sender, System.EventArgs e)
    { DataTable dtShopCart=(DataTable)Session["dtShopCart"];
    if(dtShopCart.Rows.Count<1)
    {
    Label_Msg.Text="请你选择好书籍之后再去收银台!";
    return;
    }
    decimal decTotal=0;
    for(int i=0;i<dtShopCart.Rows.Count;i++)
    decTotal+=(decimal)dtShopCart.Rows[i]["SellPrice"]*(int)dtShopCart.Rows[i]["BuyNum"];
    DateTime dtOrderDate=DateTime.Now;
    string sSql="Insert into Orders(Cust_ID,Order_Date,Order_SumMoney,Order_Status) values(@CustId,@OrderDate,@SumMoney,1)";
    SqlConnection sqlCnn=new SqlConnection("server=kevin;database=BookStore;uid='sa';pwd=");
    sqlCnn.Open();
    SqlCommand sqlCmd=new SqlCommand(sSql,sqlCnn);

    sqlCmd.CommandType=CommandType.Text;

    sqlCmd.Parameters.Add("@CustId",SqlDbType.VarChar,20);
    sqlCmd.Parameters.Add("@OrderDate",SqlDbType.DateTime,8);
    sqlCmd.Parameters.Add("@SumMoney",SqlDbType.Decimal,9);

    sqlCmd.Parameters["@CustId"].Value=Session["UserID"].ToString();
    sqlCmd.Parameters["@OrderDate"].Value=dtOrderDate;
    sqlCmd.Parameters["@SumMoney"].Value=decTotal;

        sqlCmd.ExecuteNonQuery();
    sqlCnn.Close();
           dtShopCart.Clear();
         Response.Redirect("./CashDesk.aspx?Cust_ID="+Session["UserID"].ToString());
    }
      

  33.   

    同意ruanruoshi
    类似这种问题,应该先Response.Write(sSql)看看字符串写错没有
    很容易判断哪里出问题了,呵呵
      

  34.   

    cashdesk.aspxprivate void Page_Load(object sender, System.EventArgs e)
    {
    DateTime dtOrderDate;
    decimal decTotal,decReal; if(Session["UserId"]==""||Session["UserID"]==null)
    {
    Label_Msg.Text="对不起,您未登录或者网页已经超时。"; }
    if(!IsPostBack)
    {
    string strCnn="server=kevin;database=BookStore;uid='sa';pwd=";
    string nCustID=Request["CustID"];
    SqlConnection sqlCnn=new SqlConnection(strCnn);
    sqlCnn.Open();

    //string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+" where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a, " + " OrderDetail b,Books c,Publishers d " + " where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and " + "  c.Pub_ID=d.Pub_ID and a.Cust_ID='kevin'";
    SqlDataAdapter sqlDA=new SqlDataAdapter(sSql,sqlCnn);
    DataSet bsDataSet=new DataSet();
    sqlDA.Fill(bsDataSet,"OrderDetail");
    DataTable dtOrder=bsDataSet.Tables["OrderDetail"]; DataGrid1.DataSource=dtOrder;
    DataGrid1.DataBind(); string sCustID="";
    sCustID=dtOrder.Rows[0]["Cust_ID"].ToString();
    sCustID=sCustID.Trim();
    dtOrderDate=(DateTime)dtOrder.Rows[0]["Order_Date"]; sSql="select * from Customer where Cust_ID='"+sCustID+"'";
    sqlDA.SelectCommand.CommandText=sSql;
    sqlDA.Fill(bsDataSet,"Customer");

    DL_Cust.DataSource=bsDataSet.Tables["Customer"];
    DL_Cust.DataBind();
    decReal=decTotal=0; for(int i=0;i<dtOrder.Rows.Count;i++)
    {
    decTotal+=(decimal)dtOrder.Rows[i]["Book__SellPrice"]*(int)dtOrder.Rows[i]["ODetail_Amount"];
    decReal+=(decimal)dtOrder.Rows[i]["Book__SellPrice"]*(int)dtOrder.Rows[i]["ODetail_Amount"]; }
    sqlCnn.Close(); }

    }
      

  35.   

    string nCustID=Request.QueryString["Cust_ID"].Trim();
    试试看
      

  36.   

    你就:Response.Write(sSql)一下,看一下SQL语句。不就知道那儿的错误了。
      

  37.   

    换成常量已经没什么问题了,sql就没问题
    传值哪里:Cust_ID是传递的参数(不是CustID)!
      

  38.   

    你这样试试加个@string sSql=@"select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
      

  39.   

    string strCnn="server=kevin;database=BookStore;uid='sa';pwd=";
    这个连接字符串有错误!
    去掉'sa' 上的单引号
      

  40.   

    shoppingcart.aspx
    Response.Redirect("./CashDesk.aspx?Cust_ID="+Session["UserID"].ToString());cashdesk.aspx
    string nCustID=Request["CustID"];
    ...
    and a.Cust_ID="+nCustID;你比较一下,两个页面的变量不一样啊.你会得到一个string.Empty或是null.
    当然也就查不到了.
      

  41.   

    string strCnn="server=kevin;database=BookStore;uid='sa';pwd=";
    ==============================你的连接语句错了吧!
    应该是:
    string strCnn="server=kevin;database=BookStore;uid=sa;pwd=";不要加单引号!!
      

  42.   

    你跟踪这一句,把sql复制到分析器中去执行看有没有错误,没有就是连接串的问题
      

  43.   

    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d"+"where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID="+nCustID;
    改为
    string sSql="select a.*,b.*,c.*,d.Pub_Name from Orders a,"+"OrderDetail b,Books c,Publishers d "+" where a.Cust_ID=b.Cust_ID and b.Book_ID=c.Book_ID and"+" c.Pub_ID=d.Pub_ID and a.Cust_ID='"+nCustID+"'";
    字符串存储时要加单引号