我正在使用 C# 进行数据绑定 winform 以连接 Northwind 数据库目标是在 winform gridview 提供数据,当我单击每个单元格时,数据将显示在相应的文本框中。
class Connection
{
String connectionstring = "Data Source=ECHREIPCPC0671\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True";
public ArrayList GetAllProduct(int ProductID)
{
using (var connection = new SqlConnection(connectionstring)) {
connection.Open();
String query = "SELECT * FROM Products WHERE ProductID = " + ProductID;
using (var command = new SqlCommand(query, connection))
{
var reader = command.ExecuteReader();
var list = new ArrayList();
while (reader.Read())
{
String productname = reader.GetString(1);
String quantityperunit = reader.GetString(2);
Decimal unitprice = reader.GetDecimal(3);
list.Add(productname);
list.Add(quantityperunit);
list.Add(unitprice);
}
connection.Close();
reader.Close();
return list;
}
这是我添加的新类,用于读取和获取数据到winform,这里执行代码时,总是出现错误
“无法将‘System.Int32’类型的对象转换为‘System.String’类型。
代码后:`String quantityperunit = reader.GetString(2);
我应该怎样更正我的代码?有人可以帮助我吗?
PS:在form1.cs中,我添加了使用该类成员的功能。
private void FillTextfield(int ProductID)
{
list = sqlCon.GetAllProduct(ProductID);
textProductName.Text = list[0].ToString();
textQuantityPerUnit.Text = list[1].ToString();
textUnitPrice.Text = list[2].ToString();
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
var currentRowIndex = dataGridView1.SelectedCells[0].RowIndex;
int currentIndex = (int)dataGridView1.Rows[currentRowIndex].Cells[0].Value;
FillTextfield(currentIndex);
}
}
我不认为数量单位是 int 类型,因为这个单元格内的数据类似于“12oz 瓶子”等