2013-05-05 3 views
1

Это моя первая команда SQL Parametrized update в C#, и у меня есть синтаксическая ошибка, когда я вывел мое обновление.Ошибка синтаксиса в команде Sql Parametrized update - C#

Вот мой код:

string maRequete = "UPDATE " + strNomTable + " set " 
    + "evetype = @evetype ," 
    + "evedes = @evedes ," 
    + "evecli = @evecli ," 
    + "eveusermo = @eveusermo ," 
    + "eveinterv = @eveinterv where eveNum = " + '"' + strEvtNumeroString.ToString() + '"'; 

    OleDbCommand DbCommand = new OleDbCommand(maRequete); 

    DbCommand.Parameters.Add("@evetype", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@evedes", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@evecli", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@eveusermo", OleDbType.VarChar); 
    DbCommand.Parameters.Add("@eveinterv", OleDbType.VarChar); 


    DbCommand.Parameters["@evetype"].Value = m_strEvtType.ToString().Trim(); 
    DbCommand.Parameters["@evedes"].Value = m_strDesignation.ToString().Trim(); 
    DbCommand.Parameters["@evecli"].Value = m_strCodeClient.ToString().Trim(); 
    DbCommand.Parameters["@eveusermo"].Value = m_strUserModification; 
    DbCommand.Parameters["@eveinterv"].Value = m_strCodeIntervenant.ToString().Trim(); 


    try 
    { 
     string strStringConnect = @"Provider=vfpoledb.1;Data Source=" + m_strDirectoryDBF + "\\" + strDbfFile + ".dbf;Collating Sequence=general"; 
     OleDbConnection DbConnection = new OleDbConnection(strStringConnect); 

     DbCommand.CommandType = System.Data.CommandType.Text; 

     DbConnection.Open(); 
     DbCommand.Connection = DbConnection; 

     DbCommand.ExecuteNonQuery(); 
     return "O"; 
    } 
    catch (Exception Ex) 
    { 
     return Ex.Message; 
    } 

Кто-нибудь есть идея, где моя ошибка? Кроме того, я написал в старом DBF файл (Visual Foxpro) и я думаю, что я не имеют доступа для входа в систему для того, чтобы отладить запрос :(.

Спасибо большое :)

С наилучшими пожеланиями,

Nixeus

+0

Что такое сообщение об ошибке? –

+0

"Синтаксическая ошибка." –

+0

проверить мой ответ, вы используете двойные qoutes в тексте команды –

ответ

1

Попробуйте использовать одиночные кавычки в вашем UPDATE заявления вместо двойных кавычек. Последняя строка

+ "eveinterv = @eveinterv where eveNum = " + '"' + strEvtNumeroString.ToString() + '"'; 

должен быть

+ "eveinterv = @eveinterv where eveNum = '" + strEvtNumeroString.ToString() + "'"; 
+0

Я сделал модификацию, ту же ошибку: синтаксическая ошибка :( –

1

изменить ваш текст команды, как

string maRequete = "UPDATE " + strNomTable + " set " 
+ "evetype = @evetype ," 
+ "evedes = @evedes ," 
+ "evecli = @evecli ," 
+ "eveusermo = @eveusermo ," 
+ "eveinterv = @eveinterv where eveNum = '" + strEvtNumeroString.ToString() + "'"; 
+1

Или лучше, измените использование параметра для фильтра 'where' тоже ... –

+0

Я сделал модификация, та же ошибка: синтаксическая ошибка :( –

+0

Что такое синтаксическая ошибка и какая строка –

0

Если распечатать maRequete и попробуйте запустить его в интерактивном режиме, вы увидите, что синтаксис SQL является неверен. Вероятно, вы используете двойные кавычки для обозначения строковых констант; в SQL вы должны использовать одинарные кавычки для этого. Возможно, ваши данные содержат одну цитату (т. Е. Апостроф). В этом случае вам нужно добавить и добавить один, например.

INSERT ... values ('you''ll need two apostrophes for this'); 

Это только правила SQL. Вы должны указать синтаксис сервера, если он должен выполнить ваш запрос.

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