C#.NETとSQL Server 2012でデータベースアプリケーションを開発中です。 一部のSQL文が正しく動作していません。コードを実行すると、エラーは発生しません。しかし、私が何かを削除しようとしたり、レコードを更新しようとすると、私はそれをしません。コードは次のとおりです。SQLクエリコマンドが機能していませんがエラーが発生しませんSQL Server
public void updateFinalTable()
{
DialogResult result = MessageBox.Show("Please make sure no fields are empty or they will get changed. \n\t\t Do you want to continue?",
"Important Note",
MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("UPDATE fianlTable SET AccountNumber='" + textBox1.Text + "', Date='" + dateTimePicker1.Value.ToString("MM/dd/yyyy") + "', CustomerName='" + textBox3.Text + "' , Debit='" + txtDebit.Text + "', Credit='" + txtCredit.Text + "', Balance='" + txtBalance.Text + "' WHERE Id LIKE '" + textBox4.Text + "' ", con);
cmd.ExecuteNonQuery();
this.fianlTableBindingSource.AddNew();
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("select * from fianlTable WHERE (UserName LIKE '" + LoginSession.UserID + "')", con);
sda.Fill(dt);
dataGridView1.DataSource = dt;
refresh();
con.Close();
MessageBox.Show("Record Updated Successfully!");
catch (Exception)
{
MessageBox.Show("Record Could Not be updated...! ");
}
}
}
削除操作の場合も同様です。どちらのコードもエラーは発生しませんが、データベース内に変更はありません。
おそらく、クエリが正常に動作していません。これは、クエリに間違ったIdが原因で発生している可能性がありますか?私は助けができないが、queyの最後の空白に気づくことはできない: 'textBox4.Text +" '"' - それを削除しようとしましたか? – Andersnk
[SQLインジェクションアラート](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - SQLステートメントを連結しない** ** **パラメータ化されたクエリ**代わりにSQLインジェクションを避けるため –
WHEREによってクエリがレコードに影響しないためです。アプリケーションをデバッグし、構築されたT-SQLを抽出してからサーバーに渡します。 SSMSでSQLを手動で実行して、レコードに影響しないことを証明し、コードで生成されたSQLでエラーを表示します。とにかくパラメータ化されたprocs、IMOを使うべきです。 –