首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MS Access数据库获取数据并将其显示在列表框中

从MS Access数据库获取数据并将其显示在列表框中
EN

Stack Overflow用户
提问于 2013-02-28 13:47:53
回答 7查看 52.3K关注 0票数 5

如何读取ms access数据库中的数据并将其显示在列表框中。我有代码在这里,但我有错误。

代码语言:javascript
复制
 private void button3_Click(object sender, EventArgs e)
    {
        using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Sisc-stronghold\mis!\wilbert.beltran\DataBase\DataStructure.accdb"))
        using(OleDbCommand cmd = new OleDbCommand(" SELECT * from TableAcct", conn))
        {
            conn.Open();
            OleDbDataReader Reader = cmd.ExecuteReader();
            //if (Reader.HasRows)
            if (Reader.HasRows)
            {
                Reader.Read();
                listBox1.Text = Reader.GetString("FirstName");
            }
        } 

错误如下: 1.错误1最佳重载方法匹配for'System.Data.Common.DbDataReader.GetString(int)‘有一些无效参数。2.错误2参数“%1”:无法从“string”转换为“int”

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-02-28 14:39:19

试试这个,

代码语言:javascript
复制
       List<String> firstName = new List<String>();
       List<String> lastName = new List<String>();

       private void loadButton_Click(object sender, EventArgs e)
       {
                cn.Open();
                OleDbDataReader reader = null;
                cmd = new OleDbCommand("select* from Records", cn);
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    firstName.Add(reader["FirstName"].ToString());
                    lastName.Add(reader["LastName"].ToString());
                }
                cn.Close();
       }

然后在你的搜索按钮中插入这个

代码语言:javascript
复制
private void searchButton_Click(object sender, EventArgs e)
        {
            clearSearchResult();
            try
            {
                int totalItems = FirstName.Count;
                int count = 0;
                while (count < totalItems)
                {
                    if (textBox6.Text == FirstName[count].ToString())
                    {
                        listBox1.Items.Add(FirstName[count].ToString());
                        count = 100;
                    }
                    else
                    {
                        count++;
                    }

如果您想要在listBox1_SelectedIndexChanged中显示"FirstName"的信息,那么使用它是很好的。这里有一个例子,

代码语言:javascript
复制
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
                int totalItems = lastName.Count;
                int count = 0;
                while (count < totalItems)
                {
                    if ((listBox1.SelectedItem.ToString()) == firstName[count].ToString()))
                    {
                        textBox1.Text = firstName[count].ToString();
                        textBox2.Text = lastName[count].ToString();
                        count = 100;
                    }
                    else
                    {
                        count++;
                    }
               }

希望这能帮上忙

票数 7
EN

Stack Overflow用户

发布于 2013-02-28 13:51:40

GetString()接受整数作为参数,而不是字符串。这意味着您必须使用列的索引。

在您的特定环境中,因为"FirstName“是第二列,所以索引应该是1:

代码语言:javascript
复制
listBox1.Text = Reader.GetString(1);

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getstring.aspx

票数 1
EN

Stack Overflow用户

发布于 2013-02-28 13:54:26

变化

代码语言:javascript
复制
listBox1.Text = Reader.GetString("FirstName");

代码语言:javascript
复制
listBox1.Text = Reader.GetString(0); // zero base ordinal of column
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15128361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档