今天遇到一个怪问题,就是用dataAdapter.fill()时报错”至少有一个参数没有指定“,不得其解。
代码如下:
 string selSql = @"select * from [user$] as user1 where username = '" + Login1.UserName.ToLower() +"'";
            OleDbDataAdapter dp = new OleDbDataAdapter(selSql, Global.myCoon);
            DataSet ds = new DataSet("user1");
            try
            {
                dp.Fill(ds,"user1");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    Response.Redirect("MainForm.aspx");
                }
                else
                    Response.Write("<script language='javascript'>alert(' 您输入的用户不能存!')</script>");
            }
            catch(Exception ee)
            {
                Response.Write("<script language='javascript'>alert(' "+ee.Message+"')</script>");
            }
这种代码连接oracle时写的多了dp.Fill(ds)和dp.Fill(ds,"任意表名")都可以,今天想尝试连接一下excel,就是通不过,myCoon肯定是open的,这个没问题,sql语法也是对的,因为我试过改成不对的语法,就提示语法错误。

解决方案 »

  1.   


    DataSet ds = new DataSet("user1"); 
    改为DataSet ds = new DataSet(); 
      

  2.   

    DataSet ds = new DataSet("user1"); 
    这里的"user1"是我测试时加上的,去掉也是报同样的错误。
      

  3.   

    再次说明;
    DataSet ds = new DataSet(); 
    dp.Fill(ds,"user1"); 
    dp.Fill(ds);
    我都试过,报同样错误
     
      

  4.   

    string selSql = @"select * from [user$] as user1 where username = '" + Login1.UserName.ToLower() +"'"; 
    前面为什么要加个@啊?还有表名不给他别名试试.
      

  5.   

    楼上的我服了你,我已说明了,sql语法没问题的,“@”是什么意思,你真得好好看看了。
      

  6.   

    if (ds.Tables[0].Rows.Count > 0) 你这里直接用的Tables[0],没有用Tables["user1"],那Fill(DataSet)的时候,可以不要后面的"user1"啊~~~
    直接Fill DataSet 就可以了嘛~
      

  7.   

    Excel可以用sql 这样来查的??没试过····
      

  8.   

    终于找到原因了
    我在设计excel的user工作薄时,有三列"userid username password",
    我的sql条件是用的username = "",而username又不是第一列,所有报错,改成userid = ""时就没问题
    呵呵,真的没想到是这个原因,
    我找错的过程是先将sql中的where条件都去掉,结果发现没错误了,就又用userid试试就通过了。本程序就是想连接一下excel表格试试,没想到试出这个问题,意外所得。