c# - 正确插入文本框和datagridview c# sql
问题描述
我正在使用一个小型 POS 应用程序,付款数据存储到两个表中之后。来自表格的数据被存储到来自两组数据的两个表中:
- 文本框(一般数据,如日期、工人、总数等)——保存在表 1 中
- Datagridview(产品信息,如代码、名称、数量、价格等)——保存在表格中
数据被存储到每个表中,因为在表一中插入了很多行,因为 datagridview 有行。更清楚一点:如果 datagridview 有 5 行存储在表 2 中,则表 1 中也有 5 行存储在文本框中重复的相同数据。
我用来插入的代码如下所示:
try
{
conn.Open();
foreach (DataGridViewRow row in dtgartikuj.Rows)
{
if (!row.IsNewRow)
{
SqlCommand cmd = new SqlCommand("insertfaturimi", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@nrfatures", int.Parse(txtnrfatures.Text)));
cmd.Parameters.Add(new SqlParameter("@klienti", cmbklienti.Text));
cmd.Parameters.Add(new SqlParameter("@shenime", txtshenime.Text));
cmd.Parameters.Add(new SqlParameter("@pagesa", faturimi));
cmd.Parameters.Add(new SqlParameter("@nentotali", txttotali.Text));
cmd.Parameters.Add(new SqlParameter("@zbritje", txtzbritja.Text));
cmd.Parameters.Add(new SqlParameter("@totali", totali.Text));
cmd.Parameters.Add(new SqlParameter("@vleratvsh", textBox1.Text));
cmd.Parameters.Add(new SqlParameter("@nrartikujve", lblnumri.Text));
cmd.Parameters.Add(new SqlParameter("@kasieri", lbluser.Text));
cmd.Parameters.Add(new SqlParameter("@koha", DateTime.Now));
cmd.Parameters.Add(new SqlParameter("@barkodi", row.Cells[0].Value));
cmd.Parameters.Add(new SqlParameter("@emertimi", row.Cells[1].Value));
cmd.Parameters.Add(new SqlParameter("@sasia", row.Cells[2].Value));
cmd.Parameters.Add(new SqlParameter("@tvsh", row.Cells[3].Value));
cmd.Parameters.Add(new SqlParameter("@cmimi", row.Cells[4].Value));
cmd.Parameters.Add(new SqlParameter("@totalipcs", row.Cells[5].Value));
cmd.Parameters.Add(new SqlParameter("@vlerapatvshpcs", row.Cells[6].Value));
cmd.Parameters.Add(new SqlParameter("@vleraetvshpcs", row.Cells[7].Value));
cmd.ExecuteNonQuery();
}
}
}
catch(Exception ex)
{
MessageBox.Show("Faturimi deshtoi" + ex.ToString());
}
finally
{
conn.Close();
clear();
button5.PerformClick();
}
}
我使用的存储过程如下所示:
ALTER PROCEDURE [dbo].[insertfaturimi]
@nrfatures int,
@barkodi int,
@emertimi varchar (max),
@sasia int,
@tvsh float,
@cmimi float,
@totalipcs float,
@vlerapatvshpcs float,
@vleraetvshpcs float,
@klienti varchar(100),
@pagesa varchar (200),
@shenime varchar (200),
@nrartikujve int,
@vleratvsh float,
@nentotali float,
@zbritje float,
@totali float,
@kasieri varchar(50),
@koha datetime
AS
BEGIN
INSERT INTO tbl_faturimi(ID_FATURES, Klienti, Shenime, Pagesa, Nentotali, Zbritja, Totali, VleraTVSH, NR_artikujve, Kasieri, Data)
VALUES (@nrfatures, @klienti, @shenime, @pagesa, @nentotali, @zbritje, @totali, @vleratvsh, @nrartikujve, @kasieri, @koha)
INSERT INTO tblfaturimi_details (NR_FATURES, Barkodi, Emertimi, Cmimi, Sasia, TVSH, Totali, VleraeTVSH, VleraPaTVSH)
VALUES (@nrfatures, @barkodi, @emertimi, @cmimi, @sasia, @tvsh, @totalipcs, @vleraetvshpcs, @vlerapatvshpcs)
END
我认为错误来自循环,因为循环内部也是文本框,不仅包括数据网格视图。我试图将插入文本框的代码放在循环之外,但出现错误:
过程或函数指定的参数过多
有人可以告诉代码中要更改的内容。
谢谢!
解决方案
推荐阅读
- javascript - Javascript 承诺不会在 then() 中运行代码
- android - 使用 ACTION_CREATE_DOCUMENT 写入的文件在 Google Drive 上是空的,但不是本地存储
- javascript - 如何通过 css 在文本之间添加额外字符。应用了 CSS 但显示错误的结果
- java - 在 Chrome Devtools for Java 中使用 io.webfolder.cdp.command.DOMDebugger(和示例)
- typescript - 自定义 tslint 规则来捕获“=== undefined”不起作用
- angular - 如何保存 *ngFor 生成的输入数据
- makefile - 如何缩短Makefile中的路径?
- java - 错误将此数据转换为日期(“HH:mm a”),(“dd MM”)和(“yyyy”)。如何将其划分为部分:D
- d3.js - x/y 和宽度/高度之间的线性比例不一致
- docker - 如何从部署在 docker 容器中的微服务正确访问 Spring Cloud 配置服务器中的属性?