2014-02-07 40 views
0

我有一個符合CLS的項目,除了一個變量聲明令我困惑的是如何糾正。如何使公共MySQLDataReader CLS兼容?

我有一個名爲MySQL的類,總結了它看起來像:

public class mysql 
implements idisposable 

private connection as new mysqlconnection 
private command as new mysqlcommand 
<CLSCompliant(false)> public reader as mysqldatareader 

public sub new(byval query as string) 
    if connection.state = connectionstate.open then 
    connection.connectionstring = my.settings.connectionstring 
    connection.open() 

    command.connection = connection 
    command.commandtext = query 
end sub 

public sub parameters(byval name as string, byval value as string) 
    command.parameters.addwithvalue(name, value) 
end sub 

public sub retrieve() 
    reader = command.executereader() 
end sub 

public sub send() 
    command.executenonquery() 
end sub 

public sub close() 
    if me.command.connection.state = connectionstate.open then me.command.connection.close 
    if me.connection.state = connectionstate.open then me.connection.close 
    me.dispose() 
end sub 

#region "IDisposable support" 
    private disposedvalue as boolean 
    protected overridable sub dispose(disposing as boolean) 
    if not me.disposedbalue then 
     if disposing then 
     #dispose maaged state 
     end if 

     connection.dispose() 
     command.dispose() 
     reader = nothing 
     end if 
     me.disposedvalue = true 
    end sub 

    public sub dispose() implement idisposable.dispose 
    dispose(true) 
    gc.suppressfinalize(me) 
    end sub 
#end region 

end class 

用法:

dim sql as new MySQL("SELECT * FROM TABLE WHERE NAME = ?Name") 
sql.parameters("?Name", me.textboxusername.text) 

call sql.retrieve() 

while sql.reader.read 
    text = sql.reader.getstring(sql.readergetordinal("User_Name") 
end while 

call sql.close() 

公共閱讀器MySqlDataReader將不符合CLS的,我不知道如何糾正問題。我已升級到最新的mysql數據連接器版本。我想知道如果我應該把它變成一個私有變量,並閱讀結果扔了一個函數?

我對以下代碼片段中的大小寫錯誤,拼寫錯誤等表示歉意,我從遠程桌面連接查看時輸入了該值。

回答

2

試試這個代碼先生聲明mysqlcommand。

Public query As String, cmd As MySqlCommand, reader As MySqlDataReader 
    Public SQLConnection As MySqlConnection = New MySqlConnection 
+0

這將如何工作檢索我的數據在各種功能? ie:reader.getstring.getordinal(「columnname」)? – Jeff

+0

我delclare由sql作爲新的mysql(「選擇任何」).. mysql.retrieve .. while reader.read ...文字= sql.reader.getstring(sql.reader.getordinal(「列」)) – Jeff

+0

我編輯我最初的問題,包括全班 - 我有這樣設置這種方式來傳遞參數。 – Jeff