DataTable列数据到组合框错误

时间:2014-03-20 22:56:10

标签: c# mysql winforms combobox

我想显示组合框中数据表列的所有数据。表格是订购新库存并保存到数据库中。

我遵循了本教程http://youtu.be/cdkDHkXyVFI
我收到2条错误消息:

Error   1   The best overloaded method match for 'System.Data.Common.DbDataReader.GetString(int)' has some invalid arguments  
Error   2   Argument 1: cannot convert from 'string' to 'int'

代码:

public partial class neworderForm : Form
{

public neworderForm()
{
    InitializeComponent();
    fillCombo();
}
void fillCombo()
{
    string constring = @"Data Source=|DataDirectory|\LWADataBase.sdf";
    string Query = "select * from stockTBL; ";
    SqlCeConnection conDataBase = new SqlCeConnection(constring);
    SqlCeCommand cmdDataBase = new SqlCeCommand(Query, conDataBase);
    SqlCeDataReader myReader;
    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();

        while (myReader.Read())
        {
            string sName = myReader.GetString("[Item Name]");
            comboItem.Items.Add(sName);
        }

        //displays a system error message if a problem is found
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

错误发生在string sName = myReader.GetString("[Item Name]");

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

System.Data.Common.DbDataReader上的GetString()方法获取列号(int)以将int指定的列的值作为字符串返回。这个int称为“序数”。您可以做的是将代码修改为:

string sName = myReader.GetString(myReader.GetOrdinal("[Item Name]"));

GetOrdinal()位将返回用于GetString()位的列号。

有意义吗?对于这样的东西,我倾向于读一下Intellisense的东西,当你输入时弹出,看看我需要哪种方法 - 我永远不会记住它们!

答案 2 :(得分:0)

不要使用具有该功能的字符串。如果您知道基于零的列索引将其传递给