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

还是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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,