我尝试更新C#中的一些数据
“'附近的语法不正确')'。”排队 “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();
}
}
}
答案 0 :(得分:4)
您需要在SqlCommand的末尾删除“)”。你没有开始(
所以它告诉你最后的)
是无效的语法,就是这样。
答案 1 :(得分: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);
答案 2 :(得分:0)
在WHERE子句中看起来像是一个额外的“)”:
...@EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA)", cs)
应该是:
...@EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA", cs)