【发布时间】:2019-10-09 15:21:38
【问题描述】:
我想将我的 DataGridView 数据插入到我使用参数的数据库中
这些是我的数据库文件
CREATE TABLE [dbo].[Tbl_Order] (
[Name] VARCHAR (50) NULL,
[Price] INT NULL,
[Quantity] INT NULL,
[Total] INT NULL
);
这些是我的代码
SqlConnection con = new SqlConnection("Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Student_Databse_2019_HW1;Integrated Security=True");
con.Open();
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++ )
{
SqlCommand cmd = new SqlCommand("INSERT INTO Tbl_Order(Name, Price, Quantity, Total) values(@Name, @Price, @Qty, @Total",con);
cmd.Parameters.AddWithValue("@Name", dataGridView1.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@Price", dataGridView1.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@Qty", dataGridView1.Rows[i].Cells[2].Value);
cmd.Parameters.AddWithValue("@Total", dataGridView1.Rows[i].Cells[3].Value);
cmd.ExecuteNonQuery();
}
con.Close();
dataGridView1.Rows.Clear();
我在这段代码中有错误 cmd.ExecuteNonQuery();
它说 System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常 附加信息:“@Total”附近的语法不正确。
我的 DataGridView 中有 4 个字段Name , Price , Qty , Total
有人知道是什么问题吗?
【问题讨论】:
-
数据库是数量,c#是数量。
-
您的 SQL 语句末尾似乎缺少最后的括号
-
@jdweng 我也改成数量,但还是不行
-
你看不起答案吗?
-
那里也有一些可疑和次优的东西。 A)存储像总数这样容易计算的东西是个坏主意,B)
Add(string, dbType).Value= ...比 AddWithValue 更受欢迎 C)您的 DB Provider 对象将很乐意轻松地为您更新您的数据库,而无需通过 DGV 钓鱼代码。不过参数做得很好 - 很高兴看到
标签: c# sql-server sqlcommand