使用OleDbDataReader读取数据

问题描述 投票:0回答:1

登录后我试图获取字段的值(用户访问级别为字符串格式的1或2)

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dsms.accdb");
                            connection.Open();
                            OleDbDataReader reader = null;
                            OleDbCommand command = new OleDbCommand("SELECT AL From Users WHERE Username='" + textusername.text + "'", connection);
                            reader = command.ExecuteReader();

                            if( reader.HasRows)
                            {
                                MessageBox.Show("success","status");
                                label1.Text = reader.GetString(1);
                            }
                            else
                                MessageBox.Show("failur", "status");


                            connection.Close();

我确实在Access中执行了代码,这完全没问题但是在程序中,它说“行/列没有数据”

c# .net database ms-access
1个回答
0
投票

代码中的主要问题是,您需要调用reader.Read()才能从DataReader中获取任何内容。仅调用HasRows并不会使读者位于查询的第一条记录上。

您的代码中还有其他问题。应该在using语句中创建诸如连接,命令和读取器之类的一次性对象,以确保使用后正确处置,并且由于查询中只有一个字段,因此应使用索引0来检索它,而不是1

using(OleDbConnection connection = new OleDbConnection(.....))
using(OleDbCommand command = new OleDbCommand("SELECT AL From Users WHERE Username=@name", connection);
{
    connection.Open();
    using(OleDbDataReader reader = command.ExecuteReader())
    {
        if( reader.Read())
        {
           MessageBox.Show("success","status");
           label1.Text = reader.GetString(0);
        }
        else
           MessageBox.Show("failur", "status");
    } 
}    
    connection.Close();
© www.soinside.com 2019 - 2024. All rights reserved.