创建自动完成文本框

本文关键字:文本 创建 | 更新日期: 2023-09-27 18:18:37

这是创建的方法,我得到一个错误,我似乎不明白它是如何到来的,请帮助!!错误最佳的重载方法匹配'System.Data.Common.DbDataReader.GetString(int)'有一些无效的参数

void AutoCompleteText()
    {
        search_txt.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        search_txt.AutoCompleteSource = AutoCompleteSource.CustomSource;
        AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
        OleDbCommand command = new OleDbCommand();
        command.Connection = conDB;
        command.CommandText = "select CCSpn_CODE,CCLname,CCFname,CCMname,CCDOB,CCgender,CCSchool,CaClass,CCVillage,CCSiblings,CCGuardian,CCContact,CCcurrentDt,CCImage from abaanaCC";
       // OleDbDataReader myreader;
        conDB.Open();

        OleDbDataReader myreader = command.ExecuteReader()

            while (myreader.Read())
            {
                //tring sName = myreader["CCLname"].ToString();
                string sName = myreader.GetString(1);
                //string sName = Convert.ToString(myreader.("CCLname"));
                coll.Add(sName);
            }
            search_txt.AutoCompleteCustomSource = coll;
            myreader.Close();

        conDB.Close();
    }

创建自动完成文本框

string sName = reader.GetString(1);

应该返回结果集中第二列的值(在您的示例中是CCLname列)。

GetString方法接受一个int作为参数。你需要像这样发送指定列的索引给GetString:

string sName = reader.GetString(1);

1表示第二列根据您的需要更改它。

或者你可以试试这个:

string sName = reader["CCLname"].ToString();

解决这个错误:

行/列没有数据

你应该使用using块,所以你的代码应该是:

string sqlCmD = "select CCSpn_CODE,CCLname,CCFname,CCMname,CCDOB,CCgender,CCSchool,CaClass,CCVillage,CCSiblings,CCGuardian,CCContact,CCcurrentDt,CCImage from abaanaCC";
using (OleDbConnection conDB = new OleDbConnection(address))
{
     OleDbCommand command = new OleDbCommand(sqlCmD, connection);
     conDB.Open();
     using(OleDbDataReader myreader = command.ExecuteReader())
     {
        if (myreader.Read())
        {
            string sName = myreader.GetString(1);
            ...
        }
     }
}

也许这个

string sName = Convert.ToString(myreader.["CCLname"]);