从oracle数据库自动完成文本框

时间:2015-02-25 21:04:28

标签: c# oracle visual-studio-2012

    void AutoCompleteText()
    {
        textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
        AutoCompleteStringCollection coll = new AutoCompleteStringCollection();

        string query = "select * from Book;";
        OracleConnection con = new OracleConnection(ConString);
        OracleCommand cmd = new OracleCommand(query, con);
        OracleDataReader myReader;

        try
        {
            con.Open();
            myReader = cmd.ExecuteReader();

            while (myReader.Read())
            {
                string sName = myReader.GetString("Title");
                coll.Add(sName);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        textBox1.AutoCompleteCustomSource = coll;
    }

在表格Book中我有一个名为Title的列,我想在我在textbox1中搜索时建议我,假设我在textbox1中写了A,那么它会自动弹出所有以A开头的标题Oracle数据库。

但是通过实现代码我得到了以下错误:

错误-1:'System.Data.Common.DbDataReader.GetString(int)'的最佳重载方法匹配有一些无效的参数

错误-2:参数1:无法从'string'转换为'int'

1 个答案:

答案 0 :(得分:0)

GetStringint为参数。您正在尝试传递string。您可以使用GetOrdinal获取指定列的列序号:

while (myReader.Read())
{
    string sName = myReader.GetString(myReader.GetOrdinal("Title"));
    coll.Add(sName);
}

或者,这也应该有效:

string sName = (string) myReader["Title"];