2016-06-01 2 views
-1

Я пытаюсь обновить оракула базу данных из C#, но я получаю эту ошибкуя не могу обновить свою базу данных оракула с помощью C#

ORA-00933 ВЭ: команда SQL не правильно закончился

и I не знаю, что делать.

String sqlCommand = "UPDATE CLIENTI_CD "; 
sqlCommand += "set nume_client=" + txtNumeC.Text+ "'"; 
sqlCommand += ",localit_client="+txtLocalitateC.Text+ "'"; 
sqlCommand +=",data_n to_date('"+txtDataN.Text+"','DDMMYYYY')"; 
sqlCommand += "where cod_client=" + label1.Text; 
+0

Попробуйте добавить пробел после Paren на линии 4 или до " где «в строке 5. Кроме того, я не знаю, откуда ваши данные, но он, похоже, открыт для SQL-инъекций, если вы просто кормите напрямую из текстовых полей. – Rick

ответ

1

Непосредственные причины исключения являются:

опущена "'" S:

sqlCommand += "set nume_client='" + txtNumeC.Text + "'"; 
    sqlCommand += ",localit_client='" + txtLocalitateC.Text + "'"; 

опущенные "=":

sqlCommand +=",data_n = to_date('" + txtDataN.Text+"','DDMMYYYY')"; // please, notice "=" 

лучший способ, однако, заключается в использовании параметризованный запрос :

String sqlCommand = 
    @"update CLIENTI_CD 
     set nume_client = :prm_nume_client, 
      localit_client = :prm_localit_client, 
      data_n = to_date(:prm_date, 'DDMMYYYY') 
     where cod_client = :prm_cod_client"; 

, когда вы не можете/не хотите ставить параметризованную запрос, использовать по крайней мере отформатирован один

String sqlCommand = String.Format(
    @"update CLIENTI_CD 
      set nume_client = '{0}', 
       localit_client = '{1}', 
       data_n = to_date('{2}', 'DDMMYYYY') 
     where cod_client = {3}", 
    txtNumeC.Text, 
    txtLocalitateC.Text, 
    txtDataN.Text, 
    label1.Text); 
+0

Я пробовал, но проблема остается. –

+0

@Catalin Duceac: тогда вы должны * debug *: что такое строка 'sqlCommand' перед выполнением? –

+0

Теперь я получаю «ORA-01756: строка с кавычками неправильно завершена» –

Смежные вопросы