2010-10-05 3 views
1
string updateIncomeData = @"INSERT INTO TEAM_FUNDS_DETAILS(" 
    + "COMPONENT_TYPE,COMPONENT_NAME,COMPONENT_AMOUNT, YEAR_FOR, MONTH_FOR)" 
    + "VALUES(" + Convert.ToInt32(TeamFundDetailsEnumClass.ComponentType.Income) 
    + " , ?, ?," 
    + ddlYear.SelectedIndex + ", " + ddlMonth.SelectedIndex + ")" 

Этот параметризованный запрос дает мне исключение, которое говорит мне, что есть ошибка около «?». Какая ошибка. Пожалуйста, исправьте это.Почему этот запрос дает мне исключение?

+0

Что такое вычисленное значение 'updateIncomeData' до того, как это будет выполнено? – Brad

+0

Вам не хватает закрывающейся запятой в конце вашего заявления? Или это просто ошибка с вырезанием/вставкой, вставляющая код в SO? –

+0

@Paul Hadfield: нет сэр. Я добавил полуточку в конце заявления. – Shalni

ответ

1

Я просто догадываюсь, но должен ли он быть year.selecteditem? not selectedindex?

+0

можете ли вы опубликовать структуру таблицы? – rlee923

+0

selecteditem.text? может быть? – rlee923

0

Я не понимаю, почему вы хотите смешать замещение параметров.

Укажите все пять столбцов в качестве параметров и задайте значения таким образом.

"INSERT INTO TEAM_FUNDS_DETAILS " + 
"(COMPONENT_TYPE,COMPONENT_NAME,COMPONENT_AMOUNT, YEAR_FOR, MONTH_FOR) " + 
"VALUES(? , ?, ?,?, ?)" 
+0

@Ed Manet: все еще дает исключение – Shalni

0

Вы должны установить параметризованные значения (те, у которых есть знак вопроса). Вот подобный пример в VB.NET:

' Make a Command for this connection 
' and this transaction. 
Dim cmd As New OleDb.OleDbCommand(_ 
    "SELECT * FROM People WHERE FirstName=? AND " & _ 
     "LastName=?", _ 
    connUsers) 

' Create parameters for the query. 
cmd.Parameters.Add(New _ 
    OleDb.OleDbParameter("FirstName", first_name)) 
cmd.Parameters.Add(New OleDb.OleDbParameter("LastName", _ 
    last_name)) 

Если вы не хотите использовать параметризованные запросы, просто заменить знак вопроса со значением по умолчанию, или переменной со значением:

string updateIncomeData = @"INSERT INTO TEAM_FUNDS_DETAILS(" 
    + "COMPONENT_TYPE,COMPONENT_NAME,COMPONENT_AMOUNT, YEAR_FOR, MONTH_FOR)" 
    + "VALUES(" + Convert.ToInt32(TeamFundDetailsEnumClass.ComponentType.Income) 
    + " , '', 0," 
    + ddlYear.SelectedIndex + ", " + ddlMonth.SelectedIndex + ")" 

или

string updateIncomeData = @"INSERT INTO TEAM_FUNDS_DETAILS(" 
    + "COMPONENT_TYPE,COMPONENT_NAME,COMPONENT_AMOUNT, YEAR_FOR, MONTH_FOR)" 
    + "VALUES(" + Convert.ToInt32(TeamFundDetailsEnumClass.ComponentType.Income) 
    + " , '" + myComponentName + "', " + myComponentAmount," 
    + ddlYear.SelectedIndex + ", " + ddlMonth.SelectedIndex + ")" 
Смежные вопросы