-1

INSERT クエリを使用してデータベースにデータを保存しようとしていますが、シングルクリックで二重の値を保存しています。たとえば、「Lahore」を保存すると、2 回保存されます。

ラホール ラホール

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

あなたのコードは、あなたが言ったことを正確に実行しています。
メソッドを 2 回呼び出すと、Execute*()クエリが 2 回実行されます。

于 2013-11-06T18:11:13.180 に答える
2

クエリを 2 回実行しているため、2 回節約できます。

query.ExecuteNonQuery();
SqlDataReader dt = query.ExecuteReader();
于 2013-11-06T18:11:25.490 に答える
0

2回節約しています。

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 に答える