【问题标题】:Update Command Executenonquery - Syntax Error更新命令 Executenonquery - 语法错误
【发布时间】:2013-02-21 20:22:44
【问题描述】:

我尝试在 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();
        }
    }
}

【问题讨论】:

  • 删除 SqlCommand 末尾的 ")"
  • @KyleC 我建议你把它写成答案。
  • 检查最后"WHERE ID_WLASCICIELA = @ID_WLASCICIELA)".........去掉右括号

标签: c# sql-server sql-update executenonquery


【解决方案1】:

您需要删除 SqlCommand 末尾的“)”。你没有开始 ( 所以它告诉你最后的 ) 是无效的语法,它是。

【讨论】:

  • @user1869274 现在您应该通过单击左侧的空复选标记“接受”答案。
【解决方案2】:

在 WHERE 子句中看起来像一个额外的“)”:

...@EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA)", cs)

它应该在哪里:

...@EMAIL WHERE ID_WLASCICIELA = @ID_WLASCICIELA", cs)

【讨论】:

    【解决方案3】:

    只需删除您的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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多