Anh/chị giúp em lỗi UPDATE trong C# với ạ!
Em có làm form thêm, sửa, xóa trong C#.
Code:
private void btnSave_Click(object sender, EventArgs e)
{
if (txtFirstName.Text == "")
{
MessageBox.Show("Đề nghị nhập First Name", "Thông báo ..."); return;
}
if (txtLastName.Text == "")
{
MessageBox.Show("Đề nghị nhập Last Name", "Thông báo ..."); return;
}
if (modeNew)
{
string sSql = "INSERT INTO Authors(FirstName, LastName) VALUES " +
"(N'" + txtFirstName.Text + "',N'" + txtLastName.Text + "')";
mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = sSql;
mySqlCommand.ExecuteNonQuery();
}
else
{
string AuthorID = listView1.SelectedItems[0].SubItems[0].Text;
string sSql = "UPDATE Authors" +
"SET FirstName = N'" + txtFirstName.Text + "'," +
"LastName = N'" + txtLastName.Text + "'" +
"WHERE AuthorID = " + AuthorID;
//mySqlCommand = new SqlCommand(sSql, mySqlConnection);
mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = sSql;
mySqlCommand.ExecuteNonQuery();
}
SetControls(false);
Display();
}
Chức năng thêm mới và xóa thì đã chạy được và lưu được vào cơ sở dữ liệu rồi. Còn chức năng sửa thì nó cứ báo lỗi này: Incorrect syntax near 'FirstName'
tại dòng mySqlCommand.ExecuteNonQuery();
.
Em đang tìm hiểu nên trình đang non, sữa mãi mà cụng không biết lỗi thế nào, code hình như em thấy đúng rồi mà nó cứ báo lỗi em không hiểu sao
if(modeNew)
là thêm mới thì ok rồi ạ. còn
else {
string AuthorID = listView1.SelectedItems[0].SubItems[0].Text;
string sSql = "UPDATE Authors" +
"SET FirstName = N'" + txtFirstName.Text + "'," +
"LastName = N'" + txtLastName.Text + "'" +
"WHERE AuthorID = " + AuthorID;
//mySqlCommand = new SqlCommand(sSql, mySqlConnection);
mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = sSql;
mySqlCommand.ExecuteNonQuery();
}
Thì nó không lưu được khi mình nhấn nút Save mà báo lỗi ở trên ạ.
Em copy đoạn code
UPDATE Authors
SET FirstName = N'Huu',
LastName = N'Thuc'
WHERE AuthorID = 25
vào chạy trong sql server thì cập nhật sửa thành công.
Mong anh/chị xem hộ em với.
đưa lỗi exception của đoạn update lên, chụp luôn câu sql khi chạy debug lên đây.
code thì không lỗi nên không biết như thế nào
@masoivn
Anh xem giúp ạ.
cú pháp câu sql update thường
nên anh nghĩ câu sql bị sai.
không biết sao mà câu sql của em chạy trong sql server không bị lỗi.
sai chỗ N
item1= N’a’
Đoán là bị dính chữ đó, nên có dấu cách "UPDATE Authors "
UPDATE Authors SET FirstName = N'Huu1', LastName = N'Thuc1' WHERE AuthorID = 25
Em vừa chạy lại trong sql vẫn được đó a @masoivn. Em chỉ thắc mắc 1 cái là chạy trong sql thì chạy được mà chạy code trong c# thì báo cái lỗi mà em đang hỏi đó ạ. Sửa hoài chẳng biết thế nào.
coi kỹ lại thì giống ý bạn @nguyenhuuca
chữa
set dính vào authors
"UPDATE Authors SET FirstName = N'" + txtFirstName.Text + "'," +"LastName = N'" + txtLastName.Text + "'" +"WHERE AuthorID = " + AuthorID;
Em để lại 1 hàng dài thế này trong code thì chạy được rồi. ạ. Lúc nãy em để
UPDATE
1 hàng,SET
1 hàng,WHERE
1 hàng thì không được, chắc do lỗi dấu cách hay lỗi gì đó. chứUPDATE
với Authors em kiểm tra mấy lần rồi vẩn không dính nhau.Cảm ơn 2 anh @masoivn @nguyenhuuca nhiều ạ .
em bị lỗi sai cú pháp giống như câu thông báo lỗi.
em coi lại câu sql trên hình trên sẽ thấy là chữ set bị dính với chữa authors.
lỗi này thường gặp đối với lập trình viên khi ghép chuỗi trong câu sql từ insert, update và delete.
anh cũng hay bị.
Dạ em hiểu rồi ạ, em cụng hiểu câu thông báo nó nói lỗi cú pháp rồi mà em mò mãi không ra, may mà post lên đây có các anh chỉ dẫn. Em rút kinh nghiệm code ở những đoạn sau.
Em nên dùng StringBuilder nhé, tốt hơn khi ghép chuỗi.
Em chưa hiểu nhiều kĩ thuật lắm vì đang mới tìm hiểu a @nguyenhuuca. Em đang thấy trang sau có nói dùng thủ tục, chắc không phải ghép chuổi, nhưng mới học em cứ ghép chuỗi như thế đã. chứ StringBuilder mà anh nói em chưa biết. Hic.
em lên google tìm với từ khóa “C# StringBuilder” là ra thôi.
tài liệu của mircosoft viết tốt, đọc dễ hiểu, dễ tham khảo.
em nên thử với hàm đó.
Dạ em mới học nên em học cái cơ bản theo giáo trình họ dạy đã ạ, tại giờ em tự mày mò không ai hướng dẫn nên cụng hơi khó. Tài liệu tiếng anh thì biết 1 chút đã rồi em mới đọc chứ trình tiếng anh của em cụng hơi non ạ.
Anh @nguyenhuuca @masoivn sẵn topic này cho em hỏi luôn là giờ đi làm thì họ dùng lập trình LINQ to SQL LINQ to Entities ạ. Cái em đang học là ADO.NET. Thấy 2 cái trên họ nói ở chương phía sau.
anh nghĩa tùy theo yều câu của dự án thì người ta sẽ áp dụng. Nên không biết trước được.
anh làm java em ơi, bỏ .net lâu rồi, nên cũng không biết
Dạ cám ơn 2 anh, thôi em cứ cày cuốc cho biết cơ bản đã rồi tính tiếp.