Как бороться с ошибкой неправильного синтаксиса возле ключевого слова пользователя - PullRequest
0 голосов
/ 27 апреля 2019

Я строю систему управления школой как приложение Windows на C #. Я использовал локальную базу данных и Visual Studio 2017; Я пытаюсь вставить данные в таблицу:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\zar_m\source\repos\SIS2\SIS2\SISDB.mdf;Integrated Security=True");

con.Open();

string sql_Text = "INSERT INTO user Values(@user_id,@name,@fathername,@username,@password,@email,@gender,@dob,@date_of_join,@contact,@address)";
//(user_id, name, fathername, username, password, email, gender, dob, date_of_join, contact, address)

using (SqlCommand com = new SqlCommand("INSERT INTO user VALUSE(@user_id, @name, @fathername, @username, @password, @email, @gender, @dob, @date_of_join, @contact, @address)", con))
{
    com.Parameters.AddWithValue("@user_id", user_idTextBox.Text);
    com.Parameters.AddWithValue("@name", nameTextBox.Text);
    com.Parameters.AddWithValue("@fathername", fathernameTextBox.Text);
    com.Parameters.AddWithValue("@username", usernameTextBox.Text);
    com.Parameters.AddWithValue("@password", passwordTextBox.Text);
    com.Parameters.AddWithValue("@email", emailTextBox.Text);
    com.Parameters.AddWithValue("@gender",genderTextBox.Text);
    com.Parameters.AddWithValue("@dob", dobTextBox.Text);
    com.Parameters.AddWithValue("@date_of_join", date_of_joinTextBox.Text);
    com.Parameters.AddWithValue("@contact", contactTextBox.Text);
    com.Parameters.AddWithValue("@address", addressTextBox.Text);

    int i = com.ExecuteNonQuery();

    con.Close();

    if (i != 0)
    {
        MessageBox.Show(i + "Data Saved");
    }
}

Код кажется нормальным, но я получаю ошибку

Неверный синтаксис рядом с ключевым словом user

Пожалуйста, помогите мне - спасибо

Ответы [ 2 ]

3 голосов
/ 27 апреля 2019

Если в качестве идентификатора используется ключевое слово, например имя таблицы или столбца, оно должно быть заключено в кавычки. То есть поставьте квадратные скобки вокруг user в вашем запросе.

INSERT INTO [user] VALUES (@user_id, @name, @fathername, @username, @password, @email, @gender, @dob, @date_of_join, @contact, @address)

И кстати, это VALUES, вы написали VALUSE. И это хорошая идея, чтобы явно перечислить целевые столбцы в операторе INSERT, например

INSERT INTO [user] (id, name, ...) VALUES ...

, чтобы оператор по-прежнему работал, даже если по какой-то причине число или порядок столбцов в таблице изменяется.

0 голосов
/ 27 апреля 2019

В строке ниже вы ошиблись VALUES вместо того, чтобы набрать VALUSE

using (SqlCommand com = new SqlCommand("INSERT INTO user VALUSE(@user_id, @name, @fathername, @username, @password, @email, @gender, @dob, @date_of_join, @contact, @address)", con))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...