Синтаксическая ошибка в инструкции INSERT INTO в С# OleDb Exception не может обнаружить ошибку

EXACT дубликат синтаксической ошибки в INSERT Оператор INTO в c# oledb?

Привет, не могу найти ошибку. Пожалуйста помоги. Исключение OleDb из-за синтаксической ошибки. Синтаксическая ошибка в операторе INSERT INTO Исключение OleDb не обрабатывается.

    private OleDbConnection myCon;

    public Form1()
    {
        InitializeComponent();
        myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C.mdb");
    }

private void insertuser_Click(object sender, EventArgs e)
    {
        try
        {
            OleDbCommand cmd = new OleDbCommand();
            myCon.Open();
            cmd.Connection = myCon;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO User ([UserID], [Forename], [Surname], [DateOfBirth], [TargetWeight], [TargetCalories], [Height]) Values ('" + userid.Text + "' , '" + fname.Text + "' , '" + sname.Text + "' , '" + dob.Text + "' , '" + tarweight.Text + "' , '" + tarcal.Text + "' , '" + height.Text + "')";


            cmd.ExecuteNonQuery();
            myCon.Close();
        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }



    }

person Howard    schedule 07.01.2011    source источник
comment
Вы издеваетесь над нами? Не могли бы вы рассказать нам, в чем ошибка?   -  person Randy Minder    schedule 07.01.2011
comment
Поместите скобки [] вокруг имени таблицы User. Это зарезервированное слово в SQL Server.   -  person Tim Medora    schedule 07.01.2011
comment
Пожалуйста, параметризуйте свой запрос.   -  person BoltClock    schedule 07.01.2011
comment
ТОЧНЫЙ дубликат синтаксической ошибки в INSERT Оператор INTO в c# oledb?   -  person marc_s    schedule 07.01.2011
comment
Вы только что задали этот вопрос несколько минут назад — не задавайте один и тот же вопрос снова и снова!   -  person marc_s    schedule 07.01.2011
comment
@BoltClock - не уверен, что это единственное, что не так, поэтому я не ответил. Полностью согласен с вашим комментарием по параметризации.   -  person Tim Medora    schedule 07.01.2011
comment
@Tim: Опубликуйте это как ответ на вопрос, который дублируется.   -  person BoltClock    schedule 07.01.2011


Ответы (2)


Какие значения вы пытаетесь вставить? Возможно, рост указан в футах и ​​дюймах (5'10")? В этом случае вы закроете строку (') и получите синтаксическую ошибку.

И я полностью согласен с @Brennan Vincent. Создание необработанного SQL — это не путь вперед.

person Brett    schedule 07.01.2011

Если TargetWeight, Height и TargetCalories являются значениями с плавающей запятой или целыми числами, их не нужно заключать в кавычки в операторе SQL.

Кроме того, это не имеет прямого отношения к вашему вопросу, но вам действительно следует подумать об использовании параметризованного запроса. Ваш код очень уязвим для SQL-инъекций.

person Brennan Vincent    schedule 07.01.2011