当前位置:编程学习 > C#/ASP.NET >>

奇怪的错误

if(Request.QueryString["subid"]=="" && Request.QueryString["levelid"]==""){
                    string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
        strConnection += "Data Source=";
        strConnection += MapPath("mindmap.mdb");

        OleDbConnection objconnection = new OleDbConnection(strConnection);
        string sql = "SELECT * FROM [file] Order By ftime DESC" ;
        OleDbCommand mycommand = new OleDbCommand(sql, objconnection);
        objconnection.Open();
        OleDbDataReader ds = mycommand.ExecuteReader();
        DataList3.DataSource = ds;
        DataList3.DataBind();

        }else{
        string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
        strConnection += "Data Source=";
        strConnection += MapPath("mindmap.mdb");

        OleDbConnection objconnection = new OleDbConnection(strConnection);
        string sql = "SELECT * FROM [file] WHERE [subid] = " + Request.QueryString["subid"] + " AND [levelid]=" + Request.QueryString["levelid"] ;
        OleDbCommand mycommand = new OleDbCommand(sql, objconnection);
        objconnection.Open();
        OleDbDataReader ds = mycommand.ExecuteReader();
        DataList3.DataSource = ds;
        DataList3.DataBind();
        }


上面是代码,错误却是:

语法错误 (操作符丢失) 在查询表达式 '[subid] =  AND [levelid]=' 中。


我看了好久还不知道为什么,请教高手 --------------------编程问答-------------------- 明显, Request.QueryString["subid"]和Request.QueryString["levelid"]没有取到值 --------------------编程问答-------------------- 1.看你的出错信息你的Request.QueryString["subid"]和Request.QueryString["levelid"]很可能没有去到值
2. 如果数据库里这两个字段的数据类型为整形,你这里要做类型装换
string sql = "SELECT * FROM [file] WHERE [subid] = " + Convert.ToInt32(Request.QueryString["subid"]) + " AND [levelid]=" + Convert.ToInt32(Request.QueryString["levelid"]) ;
--------------------编程问答-------------------- 可是大哥们,看看IF,没有值应该是走另外个SQL呀,怎么还是走这个呢 --------------------编程问答-------------------- 明显, Request.QueryString["subid"]和Request.QueryString["levelid"]没有取到值

楼上老大说得对。
================
解决办法,可以提供默认值,加个属性,思路如下:
string subid
{
  get
  {
     string str = Request.QueryString["subid"];
     if(string.IsNullOrEmpty(str))
     {
        return "-1";
     }
     return str;
  }
}


string sql = "SELECT * FROM [file] WHERE [subid] = " + subid + ...;

--------------------编程问答-------------------- 你的 if 用的是 &&! --------------------编程问答-------------------- 不好意思,用的是PHP的写法,.NET的怎么写 --------------------编程问答-------------------- 你的 if 用的是 &&
======================
你用&&没错,但是这是"并且"的意思,根据你现在的情况,似乎应该用 || "或"来解决 --------------------编程问答-------------------- Request.QueryString["subid"]取的是get请求的数据,如果用post它不接受的
Request["subid"]可以接POST和GET的请求的数据 --------------------编程问答-------------------- 补充,想只接受POST请求,用Request.Form --------------------编程问答-------------------- Request.QueryString["subid"]==null
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,