2013-02-21 98 views
2

我想在C#中更新一些數據我更新命令的ExecuteNonQuery - 語法錯誤

「附近有語法錯誤)'。」在行 「da.UpdateCommand.ExecuteNonQuery();」。

我瀏覽了很多時間的代碼,我再也看不到錯誤了。所以在我看來應該可以,但不是。你能看看下面的代碼嗎?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace klinika 
{ 
    public partial class frModWla : Form 
    { 
     DataSet ds = new DataSet(); 
     SqlConnection cs = new SqlConnection("Data Source=.\\SQLEXPRESS; Initial Catalog=Klinika; Integrated security=TRUE"); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     BindingSource bs = new BindingSource(); 

     public frModWla() 
     { 
      InitializeComponent(); 
     } 

     private void btnWyswietl_Click(object sender, EventArgs e) 
     { 
      bindingClear(); 
      da.SelectCommand = new SqlCommand("SELECT * FROM tbWlasciciel", cs); 
      ds.Clear(); 
      da.Fill(ds); 
      dg.DataSource = ds.Tables[0]; 

      bs.DataSource = ds.Tables[0]; 

      tbxImie.DataBindings.Add(new Binding("Text", bs, "Imie")); 
      tbxNazwisko.DataBindings.Add(new Binding("Text", bs, "Nazwisko")); 
      tbxMiejscowosc.DataBindings.Add(new Binding("Text", bs, "Miejscowosc")); 
      tbxKodPocztowy.DataBindings.Add(new Binding("Text", bs, "Kod_pocztowy")); 
      tbxAdres.DataBindings.Add(new Binding("Text", bs, "Adres")); 
      tbxTelefon.DataBindings.Add(new Binding("Text", bs, "Telefon")); 
      tbxEmail.DataBindings.Add(new Binding("Text", bs, "Email")); 

      rekord(); 

     } 

     private void bindingClear() 
     { 
      tbxImie.DataBindings.Clear(); 
      tbxNazwisko.DataBindings.Clear(); 
      tbxMiejscowosc.DataBindings.Clear(); 
      tbxKodPocztowy.DataBindings.Clear(); 
      tbxAdres.DataBindings.Clear(); 
      tbxTelefon.DataBindings.Clear(); 
      tbxEmail.DataBindings.Clear(); 
     } 

     private void btnPoprzedni_Click(object sender, EventArgs e) 
     { 
      bs.MovePrevious(); 
      dgUpdate(); 
      rekord(); 
     } 

     private void btnNastepny_Click(object sender, EventArgs e) 
     { 
      bs.MoveNext(); 
      dgUpdate(); 
      rekord(); 
     } 

     private void btnPierwszy_Click(object sender, EventArgs e) 
     { 
      bs.MoveFirst(); 
      dgUpdate(); 
      rekord(); 
     } 

     private void btnOstatni_Click(object sender, EventArgs e) 
     { 
      bs.MoveLast(); 
      dgUpdate(); 
      rekord(); 
     } 

     private void dgUpdate() 
     { 
      dg.ClearSelection(); 
      dg.Rows[bs.Position].Selected = true; 
      rekord(); 
     } 

     private void rekord() 
     { 
      lblRecords.Text = "Rekord " + bs.Position + " z " + (bs.Count - 1); 
     } 

     private void btnUaktualnij_Click(object sender, EventArgs e) 
     { 
      da.UpdateCommand = new SqlCommand("UPDATE tbWlasciciel SET NAZWISKO = @NAZWISKO, IMIE = @IMIE, MIEJSCOWOSC = @MIEJSCOWOSC, KOD_POCZTOWY = @KOD_POCZTOWY, ADRES = @ADRES, TELEFON = @TELEFON, EMAIL = @EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA)", cs); 
      da.UpdateCommand.Parameters.Add("@IMIE", SqlDbType.VarChar).Value = tbxImie.Text; 
      da.UpdateCommand.Parameters.Add("@NAZWISKO", SqlDbType.VarChar).Value = tbxNazwisko.Text; 
      da.UpdateCommand.Parameters.Add("@MIEJSCOWOSC", SqlDbType.VarChar).Value = tbxMiejscowosc.Text; 
      da.UpdateCommand.Parameters.Add("@KOD_POCZTOWY", SqlDbType.VarChar).Value = tbxKodPocztowy.Text; 
      da.UpdateCommand.Parameters.Add("@ADRES", SqlDbType.VarChar).Value = tbxAdres.Text; 
      da.UpdateCommand.Parameters.Add("@TELEFON", SqlDbType.VarChar).Value = tbxTelefon.Text; 
      da.UpdateCommand.Parameters.Add("@EMAIL", SqlDbType.VarChar).Value = tbxEmail.Text; 
      da.UpdateCommand.Parameters.Add("@ID_WLASCICIELA", SqlDbType.Int).Value = ds.Tables[0].Rows[bs.Position][0]; 
      cs.Open(); 
      da.UpdateCommand.ExecuteNonQuery(); 
      MessageBox.Show("Dane w bazie danych zostały zaktualizowane!", "Aktualizacja danych"); 
      cs.Close(); 
     } 
    } 
} 
+2

刪除「)」在您的SqlCommand結尾 – 2013-02-21 20:23:46

+0

@KyleC我建議你把它寫成答案。 – 2013-02-21 20:25:00

+0

檢查結束**「WHERE ID_WLASCICIELA = @ID_WLASCICIELA)」** .........刪除右大括號 – andy 2013-02-22 04:37:01

回答

4

您需要刪除「)」在你的SqlCommand結尾。你沒有開始(,所以它告訴你最後的)是無效的語法,它是。

+0

非常感謝!有用! – Foee 2013-02-21 20:52:13

+1

@ user1869274現在您應該通過單擊左側的空白複選標記來「接受」答案。 – MikeSmithDev 2013-02-21 20:54:16

0

SqlCommand只是刪除)。它是@ID_WLASCICIELA參數的正確值。您一次打開方括號,但您括括號兩次。

使用這樣的:在您的

da.UpdateCommand = new SqlCommand("UPDATE tbWlasciciel SET NAZWISKO = @NAZWISKO, IMIE = @IMIE, MIEJSCOWOSC = @MIEJSCOWOSC, KOD_POCZTOWY = @KOD_POCZTOWY, ADRES = @ADRES, TELEFON = @TELEFON, EMAIL = @EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA", cs);