问题:你的oleDbDataAdapter1的sql语句中有参数吗?

解决方案 »

  1.   

    并且你是否初始化了了一个id的Parameters类型的变量 加入到oleDbDataAdapter1.SelectCommand中去了
      

  2.   

    我从来了,
    我创建了一个组件ComLogin
    在里面做了一个方法如下:
    public bool Login(string i,string p)
    {

    System.Data.OleDb.OleDbCommand myCmd=new System.Data.OleDb.OleDbCommand();
    System.Data.OleDb.OleDbDataAdapter myAdpt=new System.Data.OleDb.OleDbDataAdapter();
    System.Data.OleDb.OleDbConnection myConn=new System.Data.OleDb.OleDbConnection();
    System.Data.OleDb.OleDbDataReader myRdr;
    myCmd.CommandText="SELECT id FROM tab_manager WHERE (password = ?)";
    myConn.ConnectionString=@"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Library;Data Source=ITOP01581;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ITOP01581;Use Encryption for Data=False;Tag with column collation when possible=False";
    myCmd.Connection=myConn;
                myAdpt.SelectCommand=myCmd;
    myAdpt.SelectCommand.Parameters["id"].Value=i;
    myRdr=myCmd.ExecuteReader();
    if (p==myRdr.GetString(0))
    return true;
    else
    return false;
    }
    在我的登陆页面里用它
    protected ComLogin login1 = new ComLogin(); if (login1.Login(txtId.Text,txtPassword.Text))
    Label1.Text ="failed";现在提示:
    此 OleDbParameterCollection 中未包含带有 ParameterName“id”的 OleDbParameter。 
    行 30:  myCmd.Connection=myConn;
    行 31:             myAdpt.SelectCommand=myCmd;
    行 32:  myAdpt.SelectCommand.Parameters["id"].Value=i;//为红色
    行 33:  myRdr=myCmd.ExecuteReader();
    行 34:  if (p==myRdr.GetString(0))
     
    请指导
      

  3.   

    myCmd.CommandText="SELECT id FROM tab_manager WHERE (password = @id)";
    myCmd.Parameters.Add("@id", SqlDbType.VarChar, 80).Value = i应该这样写或者
    myCmd.CommandText="SELECT id FROM tab_manager WHERE (password = @id)";
    myAdpt.SelectCommand.Parameters.Add("@id", SqlDbType.VarChar, 80).Value = i
      

  4.   

    多谢,我已经搞定了,又出现了新的问题
    密码比较一步出问题了:
    if (p==myRdr.GetString(0))
    return true;
    else
    return false;总是返回False
    我用Label显示 myRdr.GetString(0)的值时和p的值是一样的,是不是语句有问题
      

  5.   

    oleDbDataAdapter1.SelectCommand.Parameters["id"].Value =i;
    对于这样的代码,质量是不高的。比如说,Command.Parameters["id"]如果是null,调用她的value,那么就会提示null object refrenced的错误。还有字符串比较中,如果你的密码不区分大小写,那么使用str.ToUpper().Trim()进行判断,比如说你对文件名的一些操作,就应该这样。