2014-02-07 3 views
0

У меня есть проект CLS-Compliant, за исключением одного объявления переменной, которое меня путает, как исправить.Как сделать общедоступным 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

Как это будет работать для извлечения моих данных в различные функции? Т.е.: reader.getstring.getordinal ("columnname")? – Jeff

+0

I delclare by sql как новый mysql ("select whatever") .. mysql.retrieve .. while reader.read ... Text = sql.reader.getstring (sql.reader.getordinal ("column")) – Jeff

+0

Я отредактировал мой первоначальный вопрос, чтобы включить полный класс - у меня он настроен таким образом, чтобы передавать параметры. – Jeff