Синтаксическая ошибка в инструкции INSERT INTO в c # Исключение OleDb не может обнаружить ошибку - PullRequest
0 голосов
/ 07 января 2011

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()); }



    }

Ответы [ 2 ]

1 голос
/ 07 января 2011

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

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

0 голосов
/ 07 января 2011

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

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

...