请尝试以下代码将文本框和datagirdview中的数据合并并插入数据库。
private void button1_Click(object sender, EventArgs e)
{
string constr = @"";
MySqlConnection connection = new MySqlConnection(constr);
connection.Open();
string sqlcommand = "insert into Product(Transaction_No,Name,Section,DateNeeded,QTY,ITEM_DESC,AMOUNT) values(@Transaction_No,@Name,@Section,@DateNeeded,@QTY,@ITEM_DESC,@AMOUNT)";
MySqlCommand command = new MySqlCommand(sqlcommand, connection);
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
command.Parameters.AddWithValue("@QTY", Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
command.Parameters.AddWithValue("@ITEM_DESC", dataGridView1.Rows[i].Cells[1].Value.ToString());
command.Parameters.AddWithValue("@AMOUNT", dataGridView1.Rows[i].Cells[2].Value);
command.Parameters.AddWithValue("@Transaction_No", Convert.ToInt32(txtNo.Text));
command.Parameters.AddWithValue("@Name", txtName.Text);
command.Parameters.AddWithValue("@Section", txtsection.Text);
command.Parameters.AddWithValue("@DateNeeded", Convert.ToDateTime(txtDate.Text));
command.ExecuteNonQuery();
command.Parameters.Clear();
}
MessageBox.Show("success");
}
private void Form1_Load(object sender, EventArgs e)
{
txtNo.Text = "123456";
txtName.Text = "Jonjon Candare";
txtsection.Text = "IT Staff";
txtDate.Text = "2021-04-21";
dataGridView1.Columns.Add("col1", "QTY");
dataGridView1.Columns.Add("col2", "ITEM DESC");
dataGridView1.Columns.Add("col3", "AMOUNT");
dataGridView1.Rows.Add("1", "CD", "$3");
dataGridView1.Rows.Add("1", "DVD", "$250");
}
另外,我使用以下 sql 语句创建表。
CREATE TABLE [dbo].[Product]
(
[Transaction_No] INT NULL,
[Name] NVARCHAR(50) NULL,
[Section] NVARCHAR(50) NULL,
[DateNeeded] DATE NULL,
[QTY] INT NULL,
[ITEM_DESC] NVARCHAR(50) NULL,
[AMOUNT] NVARCHAR(50) NULL
)
最后一点,我不建议你创建包含空格的文件名,比如Transaction No,这样可能会导致sql错误。所以我把它改成了Transaction_No。
测试结果: