0

我正在使用 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 瓶子”等

4

3 回答 3

0

尝试

String quantityperunit=reader.GetString(2).ToString();

reader.GetString(2)正在获取一些整数数据,并且您试图将该数据放入字符串变量中,这将引发异常。

于 2013-07-25T09:01:37.870 回答
0

quantityperunit 是整数类型。

int quantityperunit = int.Parse(reader.GetString(2).ToString());
于 2013-07-25T09:04:51.700 回答
0

“无法将‘System.Int32’类型的对象转换为‘System.String’类型”

你可以试试这个..

String quantityperunit=reader.GetInt32(2).ToString();
于 2013-07-25T09:18:07.043 回答