我想显示组合框中数据表列的所有数据。表格是订购新库存并保存到数据库中。
我遵循了本教程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]");
答案 0 :(得分:4)
工作版:
myReader.GetString(myReader.GetOrdinal("[Item Name]"));
参考:
的GetString: http://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader.getstring(v=vs.110).aspx
GetOrdinal: http://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader.getordinal.aspx
答案 1 :(得分:3)
System.Data.Common.DbDataReader上的GetString()方法获取列号(int)以将int指定的列的值作为字符串返回。这个int称为“序数”。您可以做的是将代码修改为:
string sName = myReader.GetString(myReader.GetOrdinal("[Item Name]"));
GetOrdinal()位将返回用于GetString()位的列号。
有意义吗?对于这样的东西,我倾向于读一下Intellisense的东西,当你输入时弹出,看看我需要哪种方法 - 我永远不会记住它们!
答案 2 :(得分:0)
不要使用具有该功能的字符串。如果您知道基于零的列索引将其传递给