Как да направя публичен MySQLDataReader CLS-съвместим?

Имам проект, който е 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. Чудя се дали трябва да го направя частна променлива и да прочета резултатите, хвърлени на функция?

Извинявам се за неправилното изписване с главни букви, неправилното изписване и т.н. в следния кодов фрагмент, написах го, докато го преглеждах от връзка с отдалечен работен плот.


person Jeff    schedule 07.02.2014    source източник


Отговори (1)


Опитайте този код сър за деклариране на mysqlcommand.

    Public query As String, cmd As MySqlCommand, reader As MySqlDataReader
    Public SQLConnection As MySqlConnection = New MySqlConnection
person Dreamer XD    schedule 07.02.2014
comment
Как обаче ще работи това за извличане на моите данни в различни функции? Т.е.: reader.getstring.getordinal(име на колона)? - person Jeff; 07.02.2014
comment
Декларирам от sql като нов mysql(изберете каквото и да е) .. mysql.retrieve .. докато reader.read ... Текст = sql.reader.getstring(sql.reader.getordinal(колона)) - person Jeff; 07.02.2014
comment
Редактирах първоначалния си въпрос, за да включа пълния клас - настроил съм го по този начин да предава и параметри. - person Jeff; 07.02.2014
comment
query = Изберете * от таблица WHERE name= ' + name+ ' mysql_connect(True) cmd = New MySqlCommand(query, SQLConnection) reader = cmd.ExecuteReader() Try If reader.Read() Then 'function else 'function end if - person Dreamer XD; 07.02.2014