2016-03-03 7 views
0

Пожалуйста, посмотрите на следующий кодParameters.Add() не работает в случае запросов, связанных с «если существует» заявление, в C#

string SearchQuery = @"if exists (select * from table where colName = @colNameVal) select 1 else select 0"; 
AseConnection connection = new AseConnection(); 
connection.ConnectionString = connectionString; 
connection.Open(); 
try 
{ 
    AseCommand selectCommand = new AseCommand(SearchQuery, connection); 
    selectCommand.Parameters.Add(new AseParameter("@colNameVal", AseDbType.NVarChar, 13)).Value = "123"; 
    int doesValExist = (int)selectCommand.ExecuteScalar(); 
} 
catch(Exception ex) 
{ 

} 

Я использую Sybase.AdoNet4.AseClient. Вышеупомянутый код бросает AseException со следующим сообщением

«Должен объявить переменную» @colNameVal ».

Но следующий запрос работает select * from table where colName = @colNameVal.

Так что я предполагаю, что есть некоторая проблема с добавлением параметров в случае, если существует инструкция. Есть ли какая-нибудь работа для прохождения параметров?

+0

установка Try: selectCommand.CommandType = CommandType.Text –

+0

Вы пробовали 'Parameters.AddWithValue' – ninja

+0

попробовал оба ваши предложения, не работает. Получение такой же ошибки. –

ответ

0
string SearchQuery = @"select count(*) from table where colName = @colNameVal"; 
AseConnection connection = new AseConnection(); 
connection.ConnectionString = connectionString; 
connection.Open(); 
try 
{ 
    AseCommand selectCommand = new AseCommand(SearchQuery, connection); 
    selectCommand.Parameters.Add(new AseParameter("@colNameVal", AseDbType.NVarChar, 13)).Value = "123"; 
    int doesValExist = (int)selectCommand.ExecuteScalar(); 
} 
catch(Exception ex) 
{ 

} 
+0

Не работает. Получение того же сообщения об ошибке –

+0

Вы можете просто использовать буквенное форматирование, возможно, это может сработать. Я не работал с Sybase годами, предыдущий код, который у меня работал, работал в SQL Server. –

+0

Это будет работать, но есть возможность внедрения sql, поэтому я хочу этого избежать. –

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

  • Нет связанных вопросов^_^