奇怪的错误
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