【发布时间】:2015-05-15 11:47:45
【问题描述】:
我正在使用 C# 创建一个 Windows 窗体应用程序。如何创建本地数据库表来保存下述数据?目前我的数据表由“inv_Id”、“Item_Id”和“quantity”列组成。我知道我需要创建列来存储下面的每个数据项,但我不知道如何构建表格。
- item={椅子、桌子、笔、拇指驱动器}
- 价格={5,10,2,48}
- 小计
- 税
- 总计
我是 C# 的新手。我对此进行了搜索,并找到了诸如https://www.youtube.com/watch?v=I5qvyyhUKfY
之类的内容数据显示在列表框中,如下所示:
订购商品:椅子 价格:$5.00
订购商品:桌子价格:$10.00
订购商品:钢笔 价格:$2.00
订购商品:拇指驱动器价格:$48.00小计:$65.00 税:$3.90 总计:$68.90
我的目的是创建发票,然后在计算完所有内容后将其保存在数据库中。
这是我获取数据的代码,将数据库中的数据加载到下拉列表中(供用户选择他们想要购买的商品),然后(客户选择的商品将列在 listOuput 框中进行计算)用户将选择项目,然后列表框将显示所选输出并像收据一样计算总数。
计算后,我希望将 listOutput 框中的所有数据存储到我的数据库中,但是我在这里遇到了问题。
问题:我不知道如何将所有数据从列表框中移动到 数据库,并将它们在结构中链接在一起。
public partial class Select_Item : Form
{
SqlConnection con = new SqlConnection( @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\oo\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30");
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
public struct Orders
{
public string item;
public double price;
}
const double TAX=0.06;
Orders order = new Orders();
static double subtotal=0;
static double totalTaxes=0;
static double total;
string finalBill = "FINAL BILL: \n";
public Select_Item()
{
InitializeComponent();
}
private void getValues(string custOrder)
{
order.item = custOrder;
String a = comboBox1.Text;
order.price = Convert.ToDouble(custOrder);
listOutput.Items.Add("Price: " + order.price);
finalBill += "Ordered Item: " + a + "\nPrice: " + order.price.ToString("C2") + "\n";
updateBill();
}
private void updateBill()
{
subtotal += order.price;
total += order.price + (order.price * TAX);
totalTaxes += order.price * TAX;
listOutput.Items.Clear();
listOutput.Items.AddRange(finalBill.Split('\n'));
listOutput.Items.Add("Subtotal:" + subtotal.ToString("C2"));
listOutput.Items.Add("Tax:" + totalTaxes.ToString("C2"));
listOutput.Items.Add("Total:" + total.ToString("C2"));
}
private void dropdownSelection(object sender, EventArgs e)
{
if (sender == comboBox1)
System.Diagnostics.Debug.WriteLine("test " + comboBox1.SelectedValue.ToString());
getValues(comboBox1.SelectedValue.ToString());
}
编辑代码:
private void StoreData()
{
int invoiceID;
using (var con1 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\choo\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30"))
{
con.Close();
con.Open();
using (var cmd = con.CreateCommand())
{
cmd.CommandText = @"insert into Invoice(subtotal,tax,total) values (@subtotal,@tax,@total); select SCOPE_IDENTITY() as InvoiceID;";
cmd.Parameters.AddWithValue("@subtotal", subtotal);
cmd.Parameters.AddWithValue("@tax", tax);
cmd.Parameters.AddWithValue("@total", total);
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
invoiceID = (int)reader["InvoiceID"];
}
}
foreach (var item in OrderItems.Rows)
{
using (var cmd = con.CreateCommand())
{
cmd.CommandText = @"insert into InvoiceItem(invoiceID,Item_Id,quantity) values (@invoiceID,@Item_Id,@quantity);";
// cmd.Parameters.AddWithValue("@InvoiceID", invoiceID);
cmd.Parameters.AddWithValue("@invoiceID", Convert.ToInt32("invoiceID"));
cmd.Parameters.AddWithValue("@Item_Id", Convert.ToInt32("Item_Id"));
cmd.Parameters.AddWithValue("@quantity", Convert.ToInt32("quantity"));
cmd.ExecuteNonQuery();
}
}
}
}
【问题讨论】:
-
我已经编辑了您的问题,表明您正在将数据保存到 SQL 数据库。在我看来就是这种情况,但如果您不使用 SQL,请编辑您的问题以说明您是如何存储数据的。另外,我不确定您是在询问如何构建 SQL 表,还是在询问如何在 winforms 应用程序内移动数据。你能再解释一下吗?
标签: c# sql winforms schema storage