2013-02-26 3 views
1

Я пытаюсь написать подготовленный оператор для получения данных с использованием SqlDataSource, но, похоже, не может составить хороший оператор SelectCommand (7-я строка ниже). Может ли кто-то пролить свет на то, как это сделать?Получение данных Oracle с использованием SqlDataSource и подготовленного оператора C#

OracleCommand cm = new OracleCommand(); 
cm.CommandText = "SELECT FTPOSCODE FROM PPTBL WHERE DESC LIKE '%" + "@parm1" + "%"; 
cm.Parameters.Add("@parm1", "ACCOUNT"); 
OracleConnection cn = new OracleConnection(); 
cn.ConnectionString = ConfigurationManager.ConnectionStrings["ORCLConnectionString"].ConnectionString; 
cn.Open(); 
SqlDataSource1.SelectCommand = cm.ToString(); // "ORA-00900: invalid SQL statement" 
cn.Close(); 

Выше была упрощена. Мы с Славомиром продолжили беседу и придумали следующий рабочий код. Спасибо Славомир!

using (OracleConnection cn = new OracleConnection(ConfigurationManager.ConnectionStrings["ORCLConnectionString"].ConnectionString)) { 
    SqlDataSource1.SelectCommand = "SELECT FTPOSCODE, PTPOSCODE, POSCLASSTITLE, FKSA, JOBCAT, PAYGRADE, HRPAYRANGE, MONTHPAYRANGE FROM HR_PAY_PLAN WHERE UPPER(POSDESC) LIKE :1 OR UPPER(POSCLASSTITLE) LIKE :2 ORDER BY POSCLASSTITLE"; 
    SqlDataSource1.SelectParameters.Add(":1", "%" + key1 + "%"); 
    SqlDataSource1.SelectParameters.Add(":2", "%" + key1 + "%"); 
} 

ответ

4

В Oracle вы должны использовать :parm1 вместо @parm1. Кроме того, вы должны добавить знаки процента в значение параметра. Также вам не нужно создавать команду и соединение, потому что она будет создана SqlDataSource1.

SqlDataSource1.SelectCommand = "SELECT FTPOSCODE FROM PPTBL WHERE DESC LIKE :parm1"; 
SqlDataSource1.SelectParameters.Add(":parm1", "%ACCOUNT%"); 
+0

Спасибо за эти исправления, по-прежнему видя ошибку. – DavidC

+0

У вас такая же ошибка? Мне интересно, действительно ли у вас столбец с именем DESC, поскольку он зарезервирован для ключевых слов. –

+0

Я попытался опубликовать упрощенную версию кода, извините. Я добавил фактический код, который у меня есть, к исходному вопросу. Да, это ошибка «неправильного SQL». – DavidC

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