我的代码如下:Table是db.mdb的一个表public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid myDataGrid; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Data_Load();

}
private void Data_Load()
{
string DataPath=Server.MapPath("db\\db.mdb");
string mySQLstr = " SELECT UserID,UserPW FROM Table";
OleDbConnection myConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+DataPath);
myConnection.Open();
OleDbCommand myCommand=new OleDbCommand(mySQLstr,myConnection);
myDataGrid.DataSource=myCommand.ExecuteReader();
myDataGrid.DataBind();
myConnection.Close();

}
Access数据库连接是成功的,但是显示错误如下:FROM 子句语法错误。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: FROM 子句语法错误。源错误: 
行 33:  myConnection.Open();
行 34:  OleDbCommand myCommand=new OleDbCommand(mySQLstr,myConnection);
行 35:  myDataGrid.DataSource=myCommand.ExecuteReader();
行 36:  myDataGrid.DataBind();
行 37:  myConnection.Close();
 
源文件: c:\inetpub\wwwroot\dbtest\webform1.aspx.cs    行: 35 请问35行错在哪?难道是SELECT UserID,UserPW FROM Table有错吗?

解决方案 »

  1.   

    table会不会是系统关键字?
    mdb文件的可操作属性是否设置,要将ASP.NET用户权限赋予你的db.mdb文件才可以进行操作
      

  2.   

    在access中table是系统关键字,
      

  3.   

    我刚意识到table可能是系统关键字,因此我改成UserTable
    private void Data_Load()
    {
    string DataPath=Server.MapPath("db\\db.mdb");
    string mySQLstr = " SELECT UserID,UserPW FROM UserTable";
    OleDbConnection myConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="+DataPath);
    OleDbDataAdapter myDataAdapter=new OleDbDataAdapter(mySQLstr,myConnection);
    myConnection.Open();
    DataSet myDS=new DataSet();
    myDataAdapter.Fill(myDS,"UserTable");
    myDataGrid.DataSource=myDS;
    myDataGrid.DataBind();
    myConnection.Close();

    }又提示错误:
    至少一个参数没有被指定值。
    行 34:  myConnection.Open();
    行 35:  DataSet myDS=new DataSet();
    行 36:  myDataAdapter.Fill(myDS,"UserTable");
    行 37:  myDataGrid.DataSource=myDS;
    行 38:  myDataGrid.DataBind();
     源文件: c:\inetpub\wwwroot\dbtest\webform1.aspx.cs    行: 36 这又是怎么回事?
      

  4.   

    你把这mySQLstr用Response.Write  打出来看看
      

  5.   

    表明不要使用table,还有在很多都是关键字,例如password,这些单词常常被用来作为列名,要避免
      

  6.   

    换个用法试试  OleDbDataAdapter(OleDbCommand)
    还有,顺便告诉你一下  
    用DataAdapter时 ,会为你自动打开Connection 不用再手动打开
      

  7.   

    “你把这mySQLstr用Response.Write  打出来看看”
    什么意思,如果是显示“SELECT UserID,UserPW FROM UserTable”怎样?要不是又怎样?
      

  8.   

    Table是access的关键字,用[Table]
    同意
      

  9.   

    “你把这mySQLstr用Response.Write  打出来看看”
    什么意思,如果是显示“SELECT UserID,UserPW FROM UserTable”怎样?要不是又怎样?
    ---------------------------
    意思就是:打印出来,拿到ACCESS数据库中去运行一下,看会不会出问题.
      

  10.   

    我试过你的代码了,完全正确啊
    你看看,在数据库中,UserID,UserPW 这两个字段是否有错?
    还有DataGrid的绑定列的字段名称UserID,UserPW 有否写错
    代码应该是没问题的
    试试:)
      

  11.   

    至少一个参数没有被指定值这个提示大概是因为你所指定的字段(UserID,UserPW)有一个没有,你打开.mdb文件看看
      

  12.   

    我写的这段代码,发生错误后,我把它改成SQL版,能够运行,但是只能正确显示UserPW字段,UserID字段名不能显示,内容也显示“dbo”(实际数据库中为Admin),后来我把SELECT语句改为 SELECT * from UserTable,就正确了,是不是显示Access也有这个问题?我明天试一下。
      

  13.   

    SELECT [UserID],[UserPW] FROM [UserTable]都括起来,在式式
      

  14.   

    又提示错误:
    至少一个参数没有被指定值。
    行 34:  myConnection.Open();
    行 35:  DataSet myDS=new DataSet();
    行 36:  myDataAdapter.Fill(myDS,"UserTable");
    行 37:  myDataGrid.DataSource=myDS;
    行 38:  myDataGrid.DataBind();你的语句里面的UserID,UserPW和库里面的字段名字不对!!!
      

  15.   

    现在问题解决了,原因是我把数据库里的UserPW字段错写为UsetPW,就是这么一个小错误,导致网页接连出错。谢谢大家的帮助