从访问数据库访问两列时出现 IndexOutOfRange 异常

Posted

技术标签:

【中文标题】从访问数据库访问两列时出现 IndexOutOfRange 异常【英文标题】:IndexOutOfRange Exception while accessing two columns from an access database 【发布时间】:2013-05-07 10:52:40 【问题描述】:

while (reader.Read())

    if (TextBox1.Text.CompareTo(reader["usernam"].ToString()) == 0&&TextBox2.Text.CompareTo(reader["passwd"].ToString()) == 0) // A little messy but does the job to compare your infos assuming your using a textbox for username and password
    
        Label3.Text = "Redirecting";



        Response.Cookies["dbname"]["Name"] = reader["usernam"].ToString();
        Response.Cookies["dbname"].Expires = DateTime.Now.AddSeconds(10);
        Response.Redirect("index2.aspx");

    
    else
     Label3.Text = "NO"; 


当我尝试比较用户名 (usernam) 和密码 (passwd) 时,我收到此错误。 如果我只将用户名与数据库条目进行比较,它就像一个魅力。

只有在使用实际数据时才会报错。 EI如果我在登录网页中输入 [admin], [admin] 它会给我错误,如果我输入 [asd], [asd] 那么标签将变为 NO。

代码背后的想法是一个登录页面。 我希望我的解释足够好。

【问题讨论】:

请将实际代码添加到您的问题中作为文本 【参考方案1】:

您只是从表中选择用户名。您没有选择密码,因此当您尝试从结果集中检索密码时会引发异常。

将查询更改为:

string selectString = "SELECT usernam, passwd FROM Table1";

【讨论】:

【参考方案2】:

您也可以在查询中使用 * 代替列名。这里只是一个小场景。如果有多个列,那么您只需要使用 * 即可。这将使您的查询变得简单。

【讨论】:

以上是关于从访问数据库访问两列时出现 IndexOutOfRange 异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试从常量 char * 类型的指针复制数据时出现“超出内存访问”错误。为啥?

访问从 Reactjs 中的状态创建的数组的数据时出现问题

从 ASP.NET 访问“用户实例”数据库时出现用户权限错误

访问填充了从管道读取的数据的结构时出现分段错误

从 Python 访问 Redshift 时出现“无效凭据”错误

从字典访问 FlutterStandardTypedData 时出现“[__NSArrayI 数据]:无法识别的选择器”