还是FROM 子句语法错误,在线等……
用ASP连接ACCESS数据库时,出现了from字句语法错误,看来好多帖子都没找到解决的方法,请各位前辈指点下。和他们不同的是,我用的连接串没有用到关键字,而是采用了定义的字符串作为表名,总是编译不过去,我的连接串如下:
Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("test.mdb"));
Conn.Open();
SQL="select * from "+Lesson;
Comm=new OleDbCommand(SQL,Conn);
dr=Comm.ExecuteReader();
其中Lesson是string类型的变量,为什么会出现from错误呢! --------------------编程问答-------------------- 晕,还没人关顾啊,拜托了,各位高手~~~~~~ --------------------编程问答-------------------- SQL="select * from "+Lesson;
response.write(sql)
return;
Comm=new OleDbCommand(SQL,Conn);
dr=Comm.ExecuteReader();
然后把打印出来的sql语句发上来
这样不知道你后面是怎么写的 --------------------编程问答-------------------- 以下是编译错误信息:说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: FROM 子句语法错误。
源错误:
行 20: SQL="select * from "+Lesson;
行 21: Comm=new OleDbCommand(SQL,Conn);
行 22: dr=Comm.ExecuteReader();
行 23: }
行 24:
源文件: c:\inetpub\wwwroot\score.aspx 行: 22
我觉得就是采用了字符串来表示表名它才出的这个错误,如果直接引用表的名字不用字符串来表示是可以通过的,只是想知道用string定义的从外部读入的数据做表名怎么才能通过编译? --------------------编程问答-------------------- 这是整个程序的绝大多数代码,我也是按书上来的,但是出现了上面的问题,我检查了也找不出为什么,麻烦帮忙看下,程序都很简单,就是一个用来进行网上测试的小程序,但是还是出问题了~~~~
string Lesson;
string No;
string Name;
OleDbDataReader dr;
string SQL;
OleDbCommand Comm;
OleDbConnection Conn;
void Page_Load(Object Src,EventArgs e){
Lesson=Request["Lesson"];
No=Request["No"];
Name=Request["Name"];
Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("test.mdb"));
Conn.Open();
SQL="select * from "+Lesson;
Comm=new OleDbCommand(SQL,Conn);
dr=Comm.ExecuteReader();
}
string TestResult(string inputScore){
int Score=Convert.ToInt32(inputScore);
if(-1==Score){
return "你还没有考试";
}
else if(Score<60){
return "<FONT Color=Red>"+Score+"</FONT>";
}
else{
return Score.ToString();
}
}
</script>
<HTML>
<BODY BGCOLOR=BEIGE>
<H2>成绩单<HR></H2>
<%
int Score=0;
while(dr.Read()) {
if(Request["No"+dr["题号"].ToString()]!=null)
{
string Sel=Request["No"+dr["题号"].ToString()];
string Ans=dr["解答"].ToString();
if(Ans==Sel)
{
Score=Score+Convert.ToInt32(dr["分数"].ToString());
}
}
}
Conn.Close();
Conn.Open();
SQL="Select * from 成绩单";
SQL=SQL+"Where 学号="+"'"+No+"'"+"And 姓名='"+Name+"'";
Comm=new OleDbCommand(SQL,Conn);
OleDbDataReader drScore=Comm.ExecuteReader();
if(drScore.Read()){
if(drScore[Lesson].ToString()=="-1"){
SQL="update 成绩单 set"+Lesson+"="+Score.ToString()
+"where 学号="+"'"+No+"'"+"And 姓名='"+Name+"'";
Conn.Close();
Conn.Open();
Comm=new OleDbCommand(SQL,Conn);
Comm.ExecuteNonQuery();
}
else
{
Response.Write("<script>{alert('你已经考过了')}</Script>");
}
}
%>
<%=Name%>同学你好,你的考试成绩统计为:<BR>
<CENTER>
<TABLE BORDER=2 BGCOLOR="#F1F1F1" WIDTH=80%>
<TR BGCOLOR="#DDDDDD"><TD>你参加的科目</TD><TD>你的分数</TD></TR>
<%
Conn.Close();
Conn.Open();
SQL="select * from 成绩单";
SQL=SQL+"where 学号="+"'"+No+"'"+"And 姓名='"+Name+"'";
Comm=new OleDbCommand(SQL,Conn);
drScore=Comm.ExecuteReader();
if(drScore.Read()){
%>
<TR><TD>ASP</TD><TD
Align=Right><%=TestResult(drScore["ASP"].ToString())%></TD></TR>
<TR><TD>XML</TD><TD
Align=Right><%=TestResult(drScore["ASP"].ToString())%></TD></TR>
<% } %>
</TABLE></center>
<HR>
--------------------编程问答-------------------- Lesson=Request["Lesson"];
你这里的Request["Lesson"];我诂计就没拿到值,当然错了
--------------------编程问答-------------------- 这里的Lesson是从前面的登录信息里取出来的值,但是前面的登录部分我已经通过编译了,在进入这一部分的时候也是弹出form字句的问题,所以我才转过来看这边的程序。
刚才我也进行过一次编译,把Lesson赋一个具体的值后,编译是对的,可能你说的也有道理吧,我在看看从前面过来怎么样。 --------------------编程问答-------------------- 关注中,呵呵,我也遇见这事,换表就不错。纠结 --------------------编程问答-------------------- 问题就在Lession...
看看你的表名对不对。。
看看LEssion是否为null
看看你的菊花有没有洗干净。。易做图股干净了再上来发帖。。。 --------------------编程问答-------------------- SQL= "select * from "+Lesson;
=============》
SQL= "select * from '"+Lesson+"'"; --------------------编程问答-------------------- if (Lesson !="" )
{
SQL= "select * from "+Lesson+"";
}
注意from 这里要加个空格 "+Lesson+"之间一定要加个空格;
补充:.NET技术 , ASP.NET