[c#]如何使用存储过程将数据从datagridview插入数据库(winforms) [英] [c#] How to insert data from datagridview to database with stored procedure (winforms)
本文介绍了[c#]如何使用存储过程将数据从datagridview插入数据库(winforms)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个从文本框和组合框填充的datagridview,我想从datagridview
用存储过程将数据插入数据库。
在这里你可以找到我的存储过程和单击按钮的代码。
当我执行项目时,我收到此错误。任何人都可以帮我解决这个错误。
存储过程
I have a datagridview filled from textboxes and comboboxes and I want from datagridview
to insert data into database with stored procedure.
Here you can find my stored procedure and code for button click.
When I execute project I get this error. Can anyone help me to fix this error.
Stored procedure
create PROCEDURE [dbo].[usp_InsertIntoTable]
@fid int,
@lid int,
@kid int,
@pid int,
@date datetime,
@type nvarchar(50),
@qty nvarchar(50),
@remarks nvarchar(500)
AS
begin
INSERT INTO Table1
VALUES
(
@fid,
@kid,
@pid,
@date,
@type,
@remarks
)
INSERT INTO Table2
VALUES
(
@fid,
@lid,
@qty
)
end
C#代码点击按钮
C# code on button click
private void btnSave_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("usp_InsertIntoTable", BaseDAL.Connection);
cmd.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < dgvRez.Rows.Count; i++)
{
cmd.Parameters.Add(new SqlParameter("@fid", dgvRez.Rows[i].Cells["FID"].Value));
cmd.Parameters.Add(new SqlParameter("@lid", dgvRez.Rows[i].Cells["LBook"].Value));
cmd.Parameters.Add(new SqlParameter("@kid", dgvRez.Rows[i].Cells["KClient"].Value));
cmd.Parameters.Add(new SqlParameter("@pid", dgvRez.Rows[i].Cells["PEmployee"].Value));
cmd.Parameters.Add(new SqlParameter("@date", dgvRez.Rows[i].Cells["Date"].Value));
cmd.Parameters.Add(new SqlParameter("@type", dgvRez.Rows[i].Cells["Type"].Value.ToString()));
cmd.Parameters.Add(new SqlParameter("@qty", dgvRez.Rows[i].Cells["Quantity"].Value.ToString()));
cmd.Parameters.Add(new SqlParameter("@remarks", dgvRez.Rows[i].Cells["Remarks"].Value.ToString()));
cmd.ExecuteNonQuery();// Here I get the error (Conversion failed when converting the nvarchar value 'remarks' to data type int.)
}
}
推荐答案
private void btnSave_Click(object sender, EventArgs e)
{
int chkLoop;
try
{
chkLoop = dataGridView1.Rows.Count;
//chkLoop = chkLoop - 1;
MessageBox.Show(chkLoop.ToString());
foreach (DataGridViewRow row in dataGridView1.Rows)
{
//MessageBox.Show(chkLoop.ToString());
//MessageBox.Show(row.co.ToString());
if (chkLoop != 0)
{
db.command.Parameters.Add("@ItemCode", SqlDbType.VarChar).Value = row.Cells["Category Code"].Value.ToString();
db.command.Parameters.Add("@ItemName", SqlDbType.VarChar).Value = row.Cells["Category"].Value.ToString();
//MessageBox.Show("" + row.Cells["Category Code"].Value.ToString());
db.Adapter("sp_NewItem", true);
chkLoop = chkLoop - 1;
}
}
MessageBox.Show("New Item added successfully.", "Successfully done", MessageBoxButtons.OK, MessageBoxIcon.Information);
db.Adapter("select ItemName as [Item Name] from NewItem", "dt");
dataGridPreviousList.DataSource = db.dataSet.Tables["dt"];
//dataGridPreviousList.DataSource = db.Adapter("select ItemName as [Item Name] from NewItem");
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
这篇关于[c#]如何使用存储过程将数据从datagridview插入数据库(winforms)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文