[英]Creating Auto complete textbox
这是创建的方法,我收到一个错误消息,我似乎不明白它是怎么发生的,请帮忙! 错误是“ 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();
}
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 = reader.GetString(1);
应该在结果集中的第二列(在您的情况下为CCLname列)中返回值。
也许这个
string sName = Convert.ToString(myreader.["CCLname"]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.