开发者

Why does this query give me an exception?

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 开发者_StackOverflow中文版+ ", " + ddlMonth.SelectedIndex + ")"

This parametrized query gives me an exception that tells me that there is an error near "?". What is the error. Please correct it.


I am purely guessing but should it be year.selecteditem? not selectedindex?


I don't understand why you would want to mix up the parameter substitution.

Specify all five columns as parameters and set the values that way.

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


You must set the parameterized values (the ones with the question mark). Here is a similar example in 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))

If you don't want to use parameterized queries, just substitute the question mark with the default value, or the variable with the value:

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 + ")"

or

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 + ")"


ddlMonth.SelectedItem.Value

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜