Я разрабатываю приложение базы данных на C# .NET и SQL Server 2012. Некоторые из моих операторов SQL работают некорректно. Когда я выполняю код, он не дает никаких ошибок. Но когда я пытаюсь что-то удалить или обновить запись, я этого не делаю. Код находится ниже:SQL Query Command не работает, но не дает ошибку 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...! ");
}
}
}
Как в случае операции удаления. Оба кода не дают ошибок, но внутри базы данных изменений не наблюдается.
Возможно, запрос работает нормально, а не «ударяет» по строке - это может быть вызвано неправильным идентификатором в запросе? Я не могу не заметить пробел в конце quey: 'textBox4.Text +" '"' - вы пытались удалить его? – Andersnk
[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединить свои SQL-заявления - использовать ** параметризованные запросы ** вместо этого, чтобы избежать SQL-инъекции –
, потому что ваши запросы WHERE не влияют на запросы. Отладка вашего приложения и извлечение сконструированного T-SQL до этого передается на сервер. Затем вручную выполните SQL в SSMS, чтобы доказать, что он не влияет на записи и вы видите свою ошибку в SQL, создаваемом вашим кодом. Вы должны использовать параметризованные procs в любом случае, IMO. –