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
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
解决方案 »
- 急!!! 试图访问已卸载的 AppDomain
- 高分求!网页flv视频播放器!视频播放完能定在最后一帧的!
- 如何在asp.net wap 开发中使用 WML script
- 如何不输出表单实现带参数(POST)页面重定向
- 二维费率表在数据库中如何表示?
- 请问如何删除 嵌套在datalist 中的 gridview 的记录
- 高分解决古老的问题---未将对象引用设置到对象的实例。
- 如何动态增加table 的tr 和td
- 如何使文件路径“c:\inetpub\wwwroot\WebApplication1”与URL“http://localhost/WebApplication1”映射到相同的服务器位置。
- 孟兄, 大家说你js出神入化,帮我看看这贴!
- 如何获取GridView中的子控件的值?没有用模板列!
- 请问你们编asp.net程序用什么工具?
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+"'";
把你上面这些+号两边的都加个空格。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;
还不行
and 后面少空格
说明: 执行当前 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
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");
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='" + 要查找的编号 + "'
Response.Redirect("./CashDesk.aspx?Cust_ID=" + @CustId);
c:\inetpub\wwwroot\Shaolin\ShoppingCart.aspx.cs(184): 名称“CustId”在类或命名空间“Shaolin.ShopCart”中不存在我的是 ShoppingCart阿
这有加空格么?
这些sql语句调试,你设个断点,然后再拷贝到查询分析里调试下就可以了啊.
因为我换了一个常量就没有问题了
{ 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());
}
类似这种问题,应该先Response.Write(sSql)看看字符串写错没有
很容易判断哪里出问题了,呵呵
{
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(); }
}
试试看
传值哪里:Cust_ID是传递的参数(不是CustID)!
这个连接字符串有错误!
去掉'sa' 上的单引号
Response.Redirect("./CashDesk.aspx?Cust_ID="+Session["UserID"].ToString());cashdesk.aspx
string nCustID=Request["CustID"];
...
and a.Cust_ID="+nCustID;你比较一下,两个页面的变量不一样啊.你会得到一个string.Empty或是null.
当然也就查不到了.
==============================你的连接语句错了吧!
应该是:
string strCnn="server=kevin;database=BookStore;uid=sa;pwd=";不要加单引号!!
改为
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+"'";
字符串存储时要加单引号