-1

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

拉合尔拉合尔

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);
}
4

3 回答 3

3

您的代码完全按照您的要求执行。
如果您调用一个Execute*()方法两次,它将运行您的查询两次。

于 2013-11-06T18:11:13.180 回答
2

它节省了两次,因为您执行了两次查询:

query.ExecuteNonQuery();
SqlDataReader dt = query.ExecuteReader();
于 2013-11-06T18:11:25.490 回答
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);
}
于 2013-11-06T18:14:16.390 回答