Почему cmd.ExecuteNonQuery (); дай мне ошибку возле "вставить в таблицу ..." - PullRequest
0 голосов
/ 11 марта 2019

Я хочу создать программу, которая сохраняет / удаляет / редактирует файлы базы данных. Например, я хочу ввести эту информацию в базу данных:

Name: John 
Surname: Johnson 
Father's name: Johnson 
Offers used: 10 
Age: 20

И все это нужно сохранить, отредактировать или удалить. Но когда я пытаюсь сделать это

  1. Я не могу изменить имя таблицы базы данных
  2. Я получаю эту ошибку:

    Произошло необработанное исключение типа 'System.Data.SqlClient.SqlException' в System.Data.dll
    Дополнительная информация: неправильный синтаксис рядом с ключевым словом «Таблица».

Вот мой код:

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

namespace Photography_Register
{
    public partial class Form1 : Form
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Ivan\Documents\db.mdf;Integrated Security=True;Connect Timeout=30");

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            con.Open();

            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "insert into Table values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')";

            cmd.ExecuteNonQuery();

            con.Close();           

            MessageBox.Show("Data about " + textBox1.Text + " " + textBox3.Text + " has been successfully" + "\r" + "uploaded to server!");
        }
    }
}

1 Ответ

3 голосов
/ 11 марта 2019

Table - зарезервированное слово для T-SQL.Вам нужно написать это между [ ], если это действительно имя вашей таблицы.

Вот так.

insert into [Table] values ...

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-2017

Обновление с параметрами для второй проблемы (неверное количество столбцов ...)

Как вставить данные в таблицу SQL с использованием C #, а такжереализовать функцию загрузки?

SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO [Table] (ColumnName1, ColumnName2, ColumnName3, ColumnName4, ColumnName5) VALUES (@ColumnName1, @ColumnName2, @ColumnName3, @ColumnName4, @ColumnName5)";

cmd.Parameters.AddWithValue("@ColumnName1", textBox1.Text);
cmd.Parameters.AddWithValue("@ColumnName2", textBox2.Text);
cmd.Parameters.AddWithValue("@ColumnName3", textBox3.Text);
cmd.Parameters.AddWithValue("@ColumnName4", textBox4.Text);
cmd.Parameters.AddWithValue("@ColumnName5", textBox5.Text);

cmd.ExecuteNonQuery();

con.Close();

Просто замените ColumnName1 ColumnName2 ... на имя ваших столбцов и textBox1.Text, textBox2.Text ... на ваши текстовые поля ввода

Не забудьте привести textboxX.Text к нужному типу данных, если столбец не соответствует типу string.

https://docs.microsoft.com/es-es/dotnet/api/system.int32.parse?view=netframework-4.7.2

cmd.Parameters.AddWithValue("@ColumnName4", int.Parse(textBox4.Text));
cmd.Parameters.AddWithValue("@ColumnName5", int.Parse(textBox5.Text));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...