创建自动完成文本框
本文关键字:文本 创建 | 更新日期: 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"]);