1

首先让我告诉你,我已经搜索了至少一天的遮阳篷,所以我终于想试试这个。

我正在尝试为一个学校项目创建这个购物车,但我正在努力处理代码。一位老师(sql)告诉我检查数据库,有一些错误(不是我的错)。我修复了这些小错误。

现在,当我只执行 SELECT xxxx FROM xxx = no 错误时,所有内容都显示在 gridview 中。当我添加第二部分时,我得到一个“FROM 子句中的语法错误”。添加第三部分并排除第二部分是相同的错误。

也许我唯一能想到的就是数据库中的这个小东西:字段属性一般索引:是(无重复)

它可能是次要的,但它让我发疯,所以非常感谢任何帮助。

以下是相关代码:

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();
                }
            }

        }
4

1 回答 1

3

您必须在TableNameWHERE子句之间添加空格。

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;
于 2012-07-09T02:27:28.157 回答