【发布时间】:2021-11-29 17:25:54
【问题描述】:
我试图从 ASP.NET 在我的 SQL 数据库中插入一个新行,但它插入了两次而不是一次。
我无法找到下面代码的哪一行导致了这种情况。
这是我的代码:
public static void Register(User user)
{
string query = "insert into TblTutors (username,email,pass,sub,category,city,fullname,img,bio,tutor,way)
values (@username,@email,@pass,@mat,@cat,@country,@fullname,Cast(@img As nvarchar(MAX)),@bio,@tutor,@way )";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@username", user.username);
cmd.Parameters.AddWithValue("@email", user.email);
cmd.Parameters.AddWithValue("@tutor", user.tutor);
cmd.Parameters.AddWithValue("@way", user.way);
cmd.Parameters.AddWithValue("@mat", user.mat);
cmd.Parameters.AddWithValue("@cat", user.cat);
cmd.Parameters.AddWithValue("@country", user.country);
cmd.Parameters.AddWithValue("@pass", "halima");
cmd.Parameters.AddWithValue("@fullname", user.fullname);
cmd.Parameters.AddWithValue("@img", user.img);
cmd.Parameters.AddWithValue("@bio", user.bio);
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
int i = cmd.ExecuteNonQuery();
con.Close();
}
}
【问题讨论】:
-
删除 SqlDataAdapter (Fill) 周围的代码。 SqlDataAdapter 在调用 Fill 时执行构造函数中传递的查询。执行 INSERT/UPDATE/DELETE 查询的正确方法是通过 ExecuteNonQuery
-
谢谢你们的建议!
标签: asp.net sql-server database insert duplicates