2013-03-18 6 views
0

У меня есть проблема с вставкой в ​​заявлении ..Вставить элемент в базу данных

cmd = new OleDbCommand("insert into FWINFOS (ID,Name,Gender,DateOfBirth,Race,WorkingPlace,PassportNO,DateOfExpire,Position,Photo) " + 
         "values('" + textBox5.Text + "','" + textBox1.Text + "','" + textBox2.Text + 
         "','" + dateTimePicker1.Value + "','" + textBox3.Text + "','" + textBox4.Text + 
         "','" + textBox6.Text + "','" + dateTimePicker2.Value + "',@Position,@Photo)", con); 

conv_photo(); 
cmd.Parameters.AddWithValue("@Position", comboBox1.SelectedValue); 
con.Open(); 
int n = cmd.ExecuteNonQuery(); 
//cmd.ExecuteNonQuery(); 
con.Close(); 
if (n > 0) 
{ 
    MessageBox.Show("Inserted"); 
    loaddata(); 
    rno++; 
} 
else 
    MessageBox.Show("No Insert"); 

ОШИБКА: Синтаксис INSERT INTO Ошибка

Любой может мне посоветовать? Извините за мою плохую английскую грамматику.

+1

Боковой комментарий: Вы сделали хорошую работу, используя параметр для 'Position', как же вы не используете один для' id'? –

+2

"с ошибкой" -> Какая ошибка? –

+0

Да, как @Ic сказал, используйте параметризованные запросы, а также, можете ли вы дать нам ошибку? Возвращает ли значение combobox значение? Вы в первую очередь привязываете его? –

ответ

1

Кажись, как вы пропускаете параметр в запросе, попробуйте использовать этот

cmd.CommandText = "insert into Table1 (id,Position) values (@id,@Position)"; 

cmd.parameters.addwithvalue("@id", textBox1.Text); 
cmd.parameters.addwithvalue("@Position", combobox1.selectedvalue); 

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

cmd = new OleDbCommand("insert into FWINFOS (ID,Name,Gender,DateOfBirth,Race,WorkingPlace,PassportNO,DateOfExpire,[Position],Photo) " + 
        "values('" + textBox5.Text + "','" + textBox1.Text + "','" + textBox2.Text + 
        "','" + dateTimePicker1.Value + "','" + textBox3.Text + "','" + textBox4.Text + 
        "','" + textBox6.Text + "','" + dateTimePicker2.Value + "',@Position,@Photo)", con); 
+0

Hmmm ... i отредактировал код ... –

+0

Но все еще не работает –

+0

@ThamJunKai как обновленный код? это работа? –

0

Вы пропустили добавление параметра @Photo в свой код.

Это нормально для целей тестирования, но вы никогда не должны вставлять эту базу данных. Это разоблачит вашу систему до SQL Injection. По возможности вам следует использовать параметризованные запросы. Что-то вроде

int result=0; 
using (OleDbConnection myConnection = new OleDbConnection ("YourConnectionString")) 
{ 
    cmd = new OleDbCommand("insert into FWINFOS (ID,Name,Gender,DateOfBirth,Race,WorkingPlace,PassportNO,DateOfExpire,Position,Photo) values (@ID, @Gender, @DateOfBirth, @Race, @WorkingPlace, @PassportNO, @DateOfExpire, @Position, @Photo)", con); 

     conv_photo(); 
     cmd.Parameters.AddWithValue("@ID", textBox5.Text); 
     // Specify all parameters like this 
     try 
     { 
      con.Open(); 
      result = Convert.ToInt32(cmd.ExecuteNonQuery()); 
     } 

     catch(OledbException ex) 
     { 
      // Log error 
     } 
     finally 
     { 
      if (con!=null) con.Close(); 
      } 
     } 

if(result > 0) 
    // Show success message 

Также обратите внимание, что параметры OleDb позиционны, означает, что вы должны указать их в том же порядке, как в запросе. OleDbParameter Class (MSDN)

+0

У меня есть код для фотографии ниже, но я никогда не ставил его здесь. –

+0

Вы указываете фотографию внутри своего SQL-запроса, но вы не привязываете к ней параметр. –

0
There is no value for parameter @Photo, and if your photo field is not nullable or empty 
in database structure then how you can add null value in that.So make your data field 
nullable or pass value to parameter @Photo.I think it will solve your problem. 

cmd = new OleDbCommand("insert into FWINFOS (ID,Name,Gender,DateOfBirth,Race,WorkingPlace,PassportNO,DateOfExpire,Position,Photo) " + 
         "values('" + textBox5.Text + "','" + textBox1.Text + "','" + textBox2.Text + 
         "','" + dateTimePicker1.Value + "','" + textBox3.Text + "','" + textBox4.Text + 
         "','" + textBox6.Text + "','" + dateTimePicker2.Value + "',@Position,@Photo)", con); 

conv_photo(); 
cmd.Parameters.AddWithValue("@Position", comboBox1.SelectedValue); 
cmd.Parameters.AddWithValue("@Photo", assignvalue); 
con.Open(); 
int n = cmd.ExecuteNonQuery(); 
//cmd.ExecuteNonQuery(); 
con.Close(); 
if (n > 0) 
{ 
    MessageBox.Show("Inserted"); 
    loaddata(); 
    rno++; 
} 
else 
    MessageBox.Show("No Insert"); 
Смежные вопросы