对数据库选择查询感到困惑

时间:2013-08-30 18:45:37

标签: asp.net database

我正在关注会话教程。问题在于这一部分。

  OleDbCommand fecth =  new OleDbCommand(
     "SELECT * FROM YONETICI  Where  YNAME'" + 
      txtad.Text + "' and YPASS'" + txtpass.Text + "' ", 
     con);

在这部分我得到一个名为错误语法的异常--Missing运算符(我试图翻译)

这是代码的其余部分

 OleDbConnection con = new OleDbConnection(
         "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+
         Server.MapPath("App_Data\\db.accdb"));
    con.Open();



    OleDbCommand fecth =  new OleDbCommand(
           "SELECT * FROM YONETICI  Where  YNAME'" + 
            txtad.Text + "' and YPASS'" + txtpass.Text + "' ", 
            con);
   OleDbDataReader dr=fecth.ExecuteReader();
    if(dr.Read()){
    Session.Add("value",txtad.Text);
    Response.Redirect("Default.aspx");

2 个答案:

答案 0 :(得分:2)

您需要一个等于运算符。

OleDbCommand fecth =  new OleDbCommand(
                          "SELECT * FROM YONETICI  Where YNAME = '" + 
                            txtad.Text + 
                            "' and YPASS = '" + 
                            txtpass.Text + "' ", 
                          con);

试试吧。我在你的查询中添加了两个等于运算符。

答案 1 :(得分:2)

确切地说,你需要添加2个等号,但我更喜欢以更好的方式编写你的查询 ,这个将使用

之类的代码替换@Parameter
fetch.Parameters.addWithValue()


OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Server.MapPath("App_Data\\db.accdb"));
con.Open();

OleDbCommand fecth =  new OleDbCommand("SELECT * FROM YONETICI  Where  YNAME='@txtad' and YPASS='@txtpass'", con);

fecth.Parameters.AddWithValue("@txtad",txtad.Text);
fecth.Parameters.AddWithValue("@txtpass",txtpass.Text);
OleDbDataReader dr=fecth.ExecuteReader();
if(dr.Read()){
Session.Add("value",txtad.Text);
Response.Redirect("Default.aspx");