数据在保存时复制到数据库中

时间:2013-11-06 18:09:36

标签: c#

我正在尝试使用INSERT查询在数据库中保存一些数据,但它在单击时保存了双倍值。例如,我保存'拉合尔',它将保存两次:

拉​​合尔 拉合尔

SqlConnection conn = new SqlConnection("Data Source = HAMAAD-PC\\SQLEXPRESS ; Initial Catalog = BloodBank; Integrated Security = SSPI ");
try
{
   conn.Open();
   SqlCommand query = new SqlCommand("insert into City values('" + txtCity.Text + "')", conn);
   query.ExecuteNonQuery();
   SqlDataReader dt = query.ExecuteReader();

   if (dt.Read())
   {
      MessageBox.Show("Saved....!");
   }
   else
   {
      MessageBox.Show("Not saved.....");
   }
}
catch (Exception ex)
{
   MessageBox.Show("Failed....." + ex.Message);
}

3 个答案:

答案 0 :(得分:3)

您的代码完全按照您的说法进行操作。 如果您两次调用Execute*()方法,它将运行您的查询两次。

答案 1 :(得分:2)

它正在保存两次,因为您执行了两次查询:

query.ExecuteNonQuery();
SqlDataReader dt = query.ExecuteReader();

答案 2 :(得分:0)

你要保存两次。

executeNonQuery将返回受影响的行数,因此请改用它。

SqlConnection conn = new SqlConnection("Data Source = HAMAAD-PC\\SQLEXPRESS ; Initial Catalog = BloodBank; Integrated Security = SSPI ");
try
{
   conn.Open();
   SqlCommand query = new SqlCommand("insert into City values('" + txtCity.Text + "')", conn);
   var rowsAffected = query.ExecuteNonQuery();

   if (rowsAffected == 1)
   {
      MessageBox.Show("Saved....!");
   }
   else
   {
      MessageBox.Show("Not saved.....");
   }
}
catch (Exception ex)
{
   MessageBox.Show("Failed....." + ex.Message);
}