如何从Listview导出数据并保存在DataBase中

时间:2014-01-08 07:42:28

标签: mysql sql listview c#-4.0 database-table

我正在处理库存软件,其中我已经在列表视图中保存了数据,现在我想在MY SQL中的列表视图中保存数据,我在表中使用与列表视图中相同的字段,我希望每当我点击在我的完成按钮上,数据只是保存到列表视图中的表中,表中添加数据的代码是:

 {    
            int totalPrice = 0;
            int val1, val2;
            string totalp;

            val1 = Convert.ToInt32(txtProductPrice.Text);
            val2 = Convert.ToInt32(txtProductQuantity.Text);
            totalPrice = val1 * val2;

            totalp = Convert.ToString(totalPrice);

            //   int totalPrice = 0;

            lvProductInfo.Items.Add(""); //  QuestionID 
            lvProductInfo.Items[lvProductInfo.Items.Count - 1].SubItems.Add(txtProdcutCode.Text); //Question
            lvProductInfo.Items[lvProductInfo.Items.Count - 1].SubItems.Add(txtProductQuantity.Text); //Option1
            lvProductInfo.Items[lvProductInfo.Items.Count - 1].SubItems.Add(txtProductPrice.Text); //Option2
            lvProductInfo.Items[lvProductInfo.Items.Count - 1].SubItems.Add(totalp); //Option3

            //clearing text boxes.
            txtProdcutCode.Clear();
            txtProductQuantity.Clear();
            txtProductPrice.Clear();
            txtCashRecived.Clear();

            //focusing on product code.
            txtProdcutCode.Focus();
        }

现在我很困惑如何从列表视图访问数据并将其保存在SQL表的连续字段中,表中的字段名称是ItemNo,ProductCode,ProductQuantity,ProductPrice。

编辑:

我已尝试使用以下代码将数据添加到数据库表中,我可以添加每个东西(如productPrice,ProductQuantity),但字符串类型中的产品代码除外。我试过的代码是:

  private void button1_Click(object sender, EventArgs e)
        {
            string sql;

            int ProductQuantity = 0;
            string ProductCode;
            int ProductPrice = 0;
            int totalPrice = 0;

            for (int i = 0; i < lvProductInfo.Items.Count; i++)
            {
                ProductCode += Convert.ToInt32(lvProductInfo.Items[i].SubItems[1].Text);
                ProductQuantity += Convert.ToInt32(lvProductInfo.Items[i].SubItems[2].Text);
                ProductPrice += Convert.ToInt32(lvProductInfo.Items[i].SubItems[3].Text);
                totalPrice += Convert.ToInt32(lvProductInfo.Items[i].SubItems[4].Text);
            }

            sql = "";
            sql += "INSERT INTO PurchaseLog (ProductCode,ProductQuantity,ProductPrice,TotalPrice)";
            sql += " VALUES ('" + ProductCode + "','" + ProductQuantity + "','" + ProductPrice + "','" + totalPrice + "')";

            clsConnection clsCn = new clsConnection();
            SqlConnection cn = null;
            SqlCommand cmd = new SqlCommand();

            clsCn.fnc_ConnectToDB(ref cn);

            cmd.Connection = cn;
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();                

            this.Close();
        }

但我无法将产品代码添加到数据库表中。请引导我通过它。

1 个答案:

答案 0 :(得分:1)

这很有意思!您需要扩展循环并停止将值连接到变量上。如果你运行调试器并查看你生成的sql字符串,你会看到发生了什么。

代码应为:

    for (int i = 0; i < lvProductInfo.Items.Count; i++)
    {
        ProductCode = Convert.ToInt32(lvProductInfo.Items[i].SubItems[1].Text);
        ProductQuantity = Convert.ToInt32(lvProductInfo.Items[i].SubItems[2].Text);
        ProductPrice = Convert.ToInt32(lvProductInfo.Items[i].SubItems[3].Text);
        totalPrice = Convert.ToInt32(lvProductInfo.Items[i].SubItems[4].Text);


        sql = "";
        sql = "INSERT INTO PurchaseLog (ProductCode,ProductQuantity,ProductPrice,TotalPrice)"
            + " VALUES ('" + ProductCode + "','" + ProductQuantity + "','" + ProductPrice + "','" + totalPrice + "')";

        clsConnection clsCn = new clsConnection();
        SqlConnection cn = null;
        SqlCommand cmd = new SqlCommand();

        clsCn.fnc_ConnectToDB(ref cn);

        cmd.Connection = cn;
        cmd.CommandText = sql;
        cmd.ExecuteNonQuery();


        this.Close();
    }

}

不再注意“+ =”并逐个添加ListViewItem。