我正在处理库存软件,其中我已经在列表视图中保存了数据,现在我想在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();
}
但我无法将产品代码添加到数据库表中。请引导我通过它。
答案 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。