【问题标题】:How to make Public MySQLDataReader CLS-Compliant?如何使公共 MySQLDataReader 符合 CLS?
【发布时间】:2014-02-07 00:12:12
【问题描述】:

我有一个符合 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 数据连接器版本。我想知道是否应该将其设为私有变量并读取结果抛出一个函数?

对于以下代码 sn-p 中的大写错误、拼写错误等,我深表歉意,我是在从远程桌面连接查看时输入的。

【问题讨论】:

    标签: .net vb.net cls-compliant mysqldatareader


    【解决方案1】:

    先生,试试这个代码来声明mysqlcommand。

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

    【讨论】:

    • 这将如何在各种函数中检索我的数据?即:reader.getstring.getordinal("columnname") ?
    • 我将 sql 声明为新的 mysql("select whatever") .. mysql.retrieve .. while reader.read ... Text = sql.reader.getstring(sql.reader.getordinal("列"))
    • 我编辑了我最初的问题以包含完整的类 - 我也以这种方式设置它来传递参数。
    • query = " Select * from table WHERE name= '" + name+ "'" mysql_connect(True) cmd = New MySqlCommand(query, SQLConnection) reader = cmd.ExecuteReader() Try If reader.Read () Then 'function else 'function end if
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多