if(this.textBox1.Text==oleDbDataAdapter1.SelectCommand.Parameters["@customer_id"].Value&&this.textBox2.Text==oleDbDataAdapter1.SelectCommand.Parameters["@password"].Value)

解决方案 »

  1.   

    OLE DB .NET 提供程序使用标有问号 (?) 的定位参数,而不使用命名参数。
      

  2.   

    加@后又出现了这个问题了
    未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.data.dll 中。其他信息: 此 OleDbParameterCollection 中未包含带有 ParameterName“@customer_id”的 OleDbParameter。牛兄该怎么办啊?
      

  3.   

    hbxtlhx(下着春雨的天) 
    那应该怎么改啊
      

  4.   

    是不是只有这样的一种方法,我看你可以把两个框的值作为sql的条件来查找看看啊
      

  5.   

    比如下面的用法是正确的:
        OleDbParameter myParameter = new OleDbParameter("Description", OleDbType.VarChar, 88);
        myParameter.Value = "garden hose";
    所以楼主可以对一下你的参数名是不是写正确了.再有你最好不要直接这么写:
    this.textBox1.Text==oleDbDataAdapter1.SelectCommand.Parameters["customer_id"].Value一是看来起费劲,二是出了错不好调试,所以你最好先取出oleDbDataAdapter1.SelectCommand.Parameters["customer_id"].Value
    的值来和textBox1比较.比如如下:object tmpobj = oleDbDataAdapter1.SelectCommand.Parameters["customer_id"].Value;
    if (tmpobj != null && tmpobj != DbNull.Value)
    {
         if (this.textBox1.Text == tmpObj.ToString().........
    }
      

  6.   

    错误提示出来的是System.IndexOutOfRangeException
    好像就是因为你指定名称的参数没有在你的参数之内,所以你最好对一下你的参数名是否正确.
      

  7.   

    tmpObj.ToString()前面需要调用什么引用吗?参数名?就2个啊,customer_id和password,我还把他们都绑定到textbox了呢
      

  8.   


    未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.data.dll 中。其他信息: 此 OleDbParameterCollection 中未包含带有 ParameterName“@customer_id”的 OleDbParameter。因为你数据库中根本就没有customer_id这一项吧,确认一下你的单词有没有写错?!
      

  9.   

    没写错啊,我都ctrl c  ctrl v拉
      

  10.   

    你输出一下oleDbDataAdapter1.SelectCommand.Parameters.Count看看里面有多少个参数,你用
    oleDbDataAdapter1.SelectCommand.Parameters[0]之类的试试,或者快速监视一下oleDbDataAdapter1.SelectCommand.Parameters的内容看看里面的内容是怎么回事.
      

  11.   

    hbxtlhx(下着春雨的天)
    照你的方法试了下,显示出来的都是空信息,就是什么都没有
      

  12.   

    提示信息是
    未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.data.dll 中。其他信息: 此 OleDbParameterCollection 的 Count=0 的索引 0 无效。
      

  13.   

    我现在怀疑能不能这样写啊?
    this.textBox1.Text==oleDbDataAdapter1.SelectCommand.Parameters["@customer_id"].Value
      

  14.   

    楼住要是成功了给我将这个模块发给我吧。学学
    [email protected]
    谢谢。。~!
      

  15.   

    oleDbDataAdapter只是用来给填充数据集的,它本身并不带任何数据,你让它跟输入的文本比有什么含义.你必须用oleDbDataAdapter将数据从数据库中读出并填充到如dataset,datatable,datareader中后,然后用dataset,datatable,datareader中的记录跟输入的值进行比较
      

  16.   

    我用了dataset了,是调用他类里面的login还是哪一个啊?
     LiJoe(有看贴的权利,没有回帖的义务) (
      

  17.   

    xurui1016(小蕊) 你是怎么判断的啊?
      

  18.   

    数据层:
    数据库连接代码。
    逻辑层:
    public bool TestLogin(string username,string userpassword)
    {
    DataTable dt=new DataTable();
    string query="Username='"+ username +"' and Userpassword='"+ userpassword +"'";
    try
    {
    dt=da.GetDataTable("SG_User",query);
    if(dt.Rows.Count>0){return true;}
    else{return false;}
    }
    catch
    {
    return false;
    }
    }
    public DataTable GetDataUser()
    {
    DataTable dt=new DataTable();
    dt=da.GetDataTable("SG_User");
    return dt;
                        }
    窗体代码:
    private void Loginform_Load(object sender, System.EventArgs e)
    {
    this.GetBindData();

    }
    private void Loginbut_ClickEvent(object sender, System.EventArgs e)
    {
    //判断
    if (login.TestLogin (this.Usernamecmb.Text.Trim(),this.Userpasswordtxt.Text.Trim())== true)
    {
    this.Close();

    else
    {
    MessageBox.Show("密码错误,请重新输入!");
    }


    }


    private void GetBindData()//获取并绑定窗体数据
    { //填充窗体数据
    DataSet ds=new DataSet();
    ds.Tables.Add(login.GetDataUser());
    ds.Tables[0].TableName="user";
    this.Usernamecmb.DataSource=ds.Tables["user"];
    this.Usernamecmb.DisplayMember="Username";


    }
      

  19.   

    xurui1016(小蕊) 
    你是用SQL2000建的数据库吗?
      

  20.   

    我写了一个公共方法来进行登录的判断,应该比你的方法要简单点的。
    看看吧。//验证登录的“工号”和“密码”-----------------------------------------------------------------------------------------------------------------
    public static bool validateLogon(string strWorkNo,string strPassword)
    {
    //建立SqlConnection对象
    SqlConnection cn = new SqlConnection();
    cn.ConnectionString = AppConfig.ConnString;
    cn.Open();

    //建立SqlCommand及SqlDataReader对象
    string strSql;
    bool bolLogon;
    strSql = "select user_name from user_no where work_no = '" + strWorkNo + "' and password = '" + strPassword + "' and password <> '' and is_del = 0";
    SqlCommand cmd = new SqlCommand(strSql, cn);
    SqlDataReader dr = cmd.ExecuteReader();
    cmd.Dispose(); if(dr.Read())
    {
    strCurrUserNo = strWorkNo;
    strCurrUserName = dr["user_name"].ToString();
    bolLogon = true;
    }
    else
    {
    bolLogon = false;
    }
    dr.Close();
    cn.Close();
    cn.Dispose(); return bolLogon;
    }