首先让我告诉你,我已经搜索了至少一天的长裤,所以我终于想到了试一试。
我正在尝试为学校项目创建这个购物车,但我正在编写代码。老师(sql)告诉我检查数据库,有一些错误(不是我的错)。我修复了这些小错误。
现在当我只做SELECT xxxx FROM xxx =没有错误时,所有内容都显示在gridview中。 当我添加第二部分时,我在FROM子句"中得到一个"语法错误。 添加第3部分并排除第2部分是同样的错误。
也许我唯一想到的就是数据库中的这个小东西: 现场属性 一般 索引:是(无重复)
它可能是次要的东西,但它让我疯了,所以非常感谢任何帮助。
以下是相关代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["add"] == null)
{
Response.Redirect("producten.aspx");
}
else
{
Label a = new Label();
a.Text = Request.QueryString["add"];
lbl_testing.Text = a.Text;
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; "
+ "Data Source=|DataDirectory|webwinkel.accdb";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT prijs , product_id FROM Product" +
"WHERE product_id ='" + lbl_testing.Text + "'";
//"INSERT INTO Orderregels(prijsperstuk, product_id)" +
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
Label1.Text = "";
GridView1.DataSource = reader;
GridView1.DataBind();
reader.Close();
}
catch (Exception exc)
{
Label1.Text = exc.Message;
}
finally
{
conn.Close();
}
}
}
答案 0 :(得分:3)
您必须在 TableName 和 WHERE 子句之间添加空格。
cmd.CommandText = "SELECT prijs , product_id FROM Product "
+ "WHERE product_id ='" + lbl_testing.Text + "'";
使用参数来避免此类问题和SQL Injection.
cmd.CommandText = "SELECT prijs , product_id FROM Product WHERE product_id=@productid";
cmd.Parameters.Add("@productid",OleDbType.VarChar,10).Value=lbl_testing.Text;
//if Id is `numeric` type then use
//cmd.Parameters.Add("@productid",OleDbType.Integer.Value=lbl_testing.Text;