2015-10-15 71 views
0

我想我的參數化查詢,以便,而不是這個代碼This is a working code, I didn't put all the codes here because we have nothing to do with it.參數化查詢說:「不允許混合命名參數和未命名參數。」

MySQL_Query = "SET @row_number = 0; " _ 
       & "SELECT hardware_add " _ 
       & "FROM (" _ 
        & "SELECT " _ 
        & "@row_number:[email protected]_number + 1 AS num, " _ 
        & "hardware_add AS hardware_add " _ 
        & "FROM teller_info " _ 
        & "WHERE status = 'Disconnected'" _ 
       & ") AS sub_query " _ 
       & "WHERE num = " & counter & ";" 
    Console.WriteLine(MySQL_Query) 
    Dim MySQL_CMD As New MySqlCommand(MySQL_Query, MysqlConn) 

    MySQL_CMD.Connection.Open() 

的我改變它這一點。

MySQL_Query = "SET @row_number = 0; " _ 
       & "SELECT hardware_add " _ 
       & "FROM (" _ 
        & "SELECT " _ 
        & "@row_number:[email protected]_number + 1 AS num, " _ 
        & "hardware_add AS hardware_add " _ 
        & "FROM teller_info " _ 
        & "WHERE status = 'Disconnected'" _ 
       & ") AS sub_query " _ 
       & "WHERE num = ?;" 
    Console.WriteLine(MySQL_Query) 
    Dim MySQL_CMD As New MySqlCommand(MySQL_Query, MysqlConn) 


    MySQL_CMD.Connection.Open() 
    MySQL_CMD.Parameters.Add(New MySqlParameter("counter", counter)) 

錯誤說

MySql.Data.MySqlClient.MySqlException(0X80004005):混合有名和無名的參數是不允許的。

我的問題是我怎麼能正確parameterize該查詢?

+0

你嘗試提供一個名稱該參數?我的意思是,在sql和mysqlparameter中直接使用'@counter'? – Caveman

+0

@CapitánCavernícola謝謝!我把它改成這個'「WHERE num = @counter;」'和'MySQL_CMD.Parameters.Add(New MySqlParameter(「@ counter」,counter))'對不起,我不知道它會有所作爲。請發表一個答案,我會標記它。 –

回答

1

你必須給一個名字到PARAM,這樣做:

MySQL_Query = "SET @row_number = 0; " _ 
      & "SELECT hardware_add " _ 
      & "FROM (" _ 
       & "SELECT " _ 
       & "@row_number:[email protected]_number + 1 AS num, " _ 
       & "hardware_add AS hardware_add " _ 
       & "FROM teller_info " _ 
       & "WHERE status = 'Disconnected'" _ 
      & ") AS sub_query " _ 
      & "WHERE num = @counter;" 
Console.WriteLine(MySQL_Query) 

Dim MySQL_CMD As New MySqlCommand(MySQL_Query, MysqlConn) 
MySQL_CMD.Connection.Open() 
MySQL_CMD.Parameters.Add(New MySqlParameter("@counter", counter))