国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

對ADO.NET幾個對象的第一次加工

2024-07-10 13:03:01
字體:
來源:轉載
供稿:網友
 

namespace tonton.dal
  '//----------------------------------------
  '//《數據鏈接層》 之 《數據連接與命令行》
  '//----------------------------------------
  '//作者:張少棠 (tonton)
  '//時間:2005年8月29日
  '//郵編:[email protected]
  '//主頁:http://www.tonton.cn
  '//博客:http://blog.tonton.cn
  '//----------------------------------------

  '//----------------------------------------
  '//例子:
  '//----------------------------------------
  'dim conn as new tonton.dal.connection
  'dim cmd as tonton.dal.command
  '
  '  try
  '    '//打開access數據庫,也可以用連接字符串并采用open方法,
  '    '//conn.open("provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("db.mdb"))
  '    '//當然,如果知道是用access,你會用上面這個麻煩的方法嗎?
  '    '//如果是sql server的話,可以用 conn.opensqlserver 方法。
  '    '
  '    conn.openaccess(server.mappath("db.mdb"))

  '    '//添加記錄
  '    cmd = conn.execute("insert into [item]([value]) values (?)")
  '    cmd.addparam("添加的內容")
  '    cmd.update()

  '    '//刪除記錄
  '    cmd = conn.execute("delete from [item] where id=?")
  '    cmd.addparam(6)      '//要刪除的記錄號
  '    cmd.update()

  '    '//更新記錄
  '    cmd = conn.execute("update [item] set [value]=? where id=?")
  '    cmd.addparam("新的內容")
  '    cmd.addparam(5)
  '    cmd.update()

  '    '//讀取記錄
  '    cmd = conn.execute("select * from [item]")
  '    if cmd.read then
  '      response.write(cmd("value"))
  '    else
  '      response.write("ok")
  '    end if

  '  catch ex as exception
  '    '//出錯處理
  '    response.write(ex)
  '  finally
  '    '關閉連接
  '    conn.close()
  '    cmd = nothing
  '  end try
  '//----------------------------------------
  '//例子結束
  '//----------------------------------------


  '//----------------------------------------
  '//類定義開始
  '//----------------------------------------

  '數據連接類型枚舉
  public enum connectiontype as integer
    oledb = 1
    sqlserver = 2
    'oracle = 3
    'mysql = 4
  end enum

  '連接字符串構造器類
  public class connectstringbuilder
    public shared function jetoledb(byval databasepath as string, optional byval password as string = "") as string
      if databasepath <> "" then
        jetoledb = "provider=microsoft.jet.oledb.4.0;data source=" & databasepath & ";"
        if password <> "" then
          jetoledb &= "user id='admin';password=;jet oledb:database password=" & password
        end if
      end if
    end function

    public shared function sqloledb(optional byval hostname as string = "localhost", optional byval catalog as string = "", optional byval username as string = "sa", optional byval password as string = "") as string
      sqloledb = "provider=sqloledb.1;persist security info=false;data source=" & hostname & ";password=" & password & ";user id=" & username & ";"
      if catalog <> "" then sqloledb &= "initial catalog=" & catalog & ";"
    end function

    public shared function sqlclient(optional byval hostname as string = "localhost", optional byval catalog as string = "", optional byval username as string = "sa", optional byval password as string = "") as string
      sqlclient = "persist security info=false;data source=" & hostname & ";password=" & password & ";user id=" & username & ";"
      if catalog <> "" then sqlclient &= "initial catalog=" & catalog & ";"
    end function

    public shared function dsn(byval dsnname as string) as string
      return "dsn=" & dsnname
    end function
  end class

  '連接對象類
  public class connection
    private _dbconn as idbconnection
    private _connstr as string
    private _dbtype as connectiontype = connectiontype.oledb

    public sub new(optional byval connecttype as connectiontype = connectiontype.oledb)
      _dbtype = connecttype
    end sub

    public sub new(byref connect as idbconnection)
      if typeof connect is sqlclient.sqlconnection then
        _dbtype = connectiontype.sqlserver
      elseif typeof connect is oledb.oledbconnection then
        _dbtype = connectiontype.oledb
      end if
    end sub

    public sub new(byval connstring as string, optional byval connecttype as connectiontype = connectiontype.oledb)
      _dbtype = connecttype
      me.connectstring = connstring
    end sub

    '設置/返回連接字符串,設置的同時生成新的連接對象實例
    public property connectstring() as string
      get
        return _connstr
      end get
      set(byval value as string)
        _connstr = value
        try
          _dbconn.close()
        catch ex as exception
        finally
          if value <> "" then
            select case _dbtype
              case connectiontype.oledb
                _dbconn = new oledb.oledbconnection(_connstr)
              case connectiontype.sqlserver
                _dbconn = new sqlclient.sqlconnection(_connstr)
              case else
                _dbconn = nothing
            end select
          else
            _dbconn = nothing
          end if
        end try
      end set
    end property

    '設置/返回連接類型
    public property connecttype() as connectiontype
      get
        return _dbtype
      end get
      set(byval value as connectiontype)
        _dbtype = value
        me.connectstring = _connstr
      end set
    end property

    protected overrides sub finalize()
      try
        _dbconn.close()
        _dbconn.dispose()
      catch ex as exception
      finally
        mybase.finalize()
      end try
    end sub

    '返回連接對象
    public readonly property connection() as idbconnection
      get
        return _dbconn
      end get
    end property

    '打開一個數據庫連接,要指定連接類型(默認為oledb)
    public function open(optional byval connstring as string = "", optional byval conntype as connectiontype = connectiontype.oledb) as boolean
      try
        if connstring <> "" then
          _connstr = connstring
          _dbtype = conntype
        end if
        _dbconn.open()
        return true
      catch ex as exception
        throw ex
        return false
      end try
    end function

    '打開一個access連接
    public function openaccess(byval dbpath as string, optional byval password as string = "") as boolean
      if dbpath <> "" then
        try
          _connstr = "provider=microsoft.jet.oledb.4.0;data source=" & dbpath & ";"
          if password <> "" then
            _connstr &= "user id='admin';password=;jet oledb:database password=" & password
          end if
          _dbtype = connectiontype.oledb
          _dbconn = new oledb.oledbconnection(_connstr)
          return true
        catch ex as exception
          throw ex
          return false
        end try
      end if
    end function

    '打開一個sql server連接
    public function opensqlserver(optional byval hostname as string = "localhost", optional byval catalog as string = "", optional byval username as string = "sa", optional byval password as string = "") as boolean
      try
        _connstr = "persist security info=false;data source=" & hostname & ";password=" & password & ";user id=" & username & ";"
        if catalog <> "" then _connstr &= "initial catalog=" & catalog & ";"

        _dbtype = connectiontype.sqlserver
        _dbconn = new sqlclient.sqlconnection(_connstr)
        return true
      catch ex as exception
        throw ex
        return false
      end try
    end function

    '關閉數據連接
    public sub close()
      try
        _dbconn.close()
        _dbconn = nothing
      catch ex as exception
      end try
    end sub

    '執行一個sql語句,生成或不生成一個command對象
    public function execute(byval sql as string, optional byval nonquery as boolean = false) as command
      execute = new command(_dbconn, sql)
      if nonquery then execute.update()
    end function

    '生成一個dataset,不再需要手工生成dataadapter對象了。
    public readonly property datasource(byval sql as string, optional byval name as string = "", optional byval schema as boolean = false) as dataset
      get
        dim ds as idataadapter
        select case _dbtype
          case connectiontype.oledb
            ds = new oledb.oledbdataadapter(sql, _dbconn)
          case connectiontype.sqlserver
            ds = new sqlclient.sqldataadapter(sql, _dbconn)
        end select

        if name = "" then
          datasource = new dataset
        else
          datasource = new dataset(name)
        end if

        if schema then ds.fillschema(datasource, schematype.source)
        ds.fill(datasource)
      end get
    end property
  end class

  '命令行類
  public class command
    private _cmd as idbcommand
    private _sql as string
    private _conn as idbconnection
    private _rdr as idatareader
    private _dbtype as connectiontype

    public sub new(byref connect as idbconnection)
      _conn = connect
      if typeof connect is oledb.oledbconnection then
        _dbtype = connectiontype.oledb
      elseif typeof connect is sqlclient.sqlconnection then
        _dbtype = connectiontype.sqlserver
      end if
    end sub

    public sub new(byref connect as idbconnection, byval sql as string)
      _conn = connect
      if typeof connect is oledb.oledbconnection then
        _dbtype = connectiontype.oledb
      elseif typeof connect is sqlclient.sqlconnection then
        _dbtype = connectiontype.sqlserver
      end if
      me.sql = sql
    end sub

    protected overrides sub finalize()
      try
        _cmd.dispose()
        _rdr.dispose()
        _conn.dispose()
      catch ex as exception
      finally
        mybase.finalize()
      end try
    end sub

    '設置或返回連接對象
    public property connect() as idbconnection
      get
        return _conn
      end get
      set(byval value as idbconnection)
        _conn = value
      end set
    end property

    '讀取或設置sql語句
    public property sql() as string
      get
        return _sql
      end get
      set(byval value as string)
        _sql = value
        if _dbtype = connectiontype.sqlserver then
          _cmd = new sqlclient.sqlcommand(sql, _conn)
        else
          _cmd = new oledb.oledbcommand(_sql, _conn)
        end if
      end set
    end property

    '讀取下一記錄行,如果記錄集沒有打開,則自動打開。
    public function read(optional byval behavior as system.data.commandbehavior = commandbehavior.default) as boolean
      if _rdr is nothing then
        try
          _rdr = _cmd.executereader(behavior)
          return _rdr.read
        catch ex as exception
          return false
        end try
        return false
      else
        return _rdr.read
      end if
    end function

    '//返回字段數
    public function fieldcount() as integer
      try
        return _rdr.fieldcount
      catch ex as exception
        return 0
      end try
    end function

    '//執行命令
    public function update() as boolean
      try
        if _conn.state <> connectionstate.open then
          _conn.open()
        end if
        _cmd.executenonquery()
        return true
      catch ex as exception
        throw ex
        return false
      end try
    end function

    '//讀取字段或添加sql的命名參數
    default public property item(byval name as string)
      get
        return _rdr(name)
      end get
      set(byval value)
        addparam(value, name)
      end set
    end property

    '//讀取字段
    default public readonly property item(byval index as integer)
      get
        return _rdr(index)
      end get
    end property

    '//添加參數
    public function addparam(byref value as object, optional byval name as string = "")
      if _dbtype = connectiontype.oledb then
        return ctype(_cmd, oledb.oledbcommand).parameters.add(name, value)
      else
        return _cmd.parameters.add(new sqlclient.sqlparameter("@" & name, value))
      end if
    end function
  end class
end namespace


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九龙城区| 盘山县| 山阳县| 江阴市| 山阳县| 开阳县| 万源市| 温州市| 旬邑县| 龙游县| 沈丘县| 宜宾市| 比如县| 大方县| 元阳县| 深水埗区| 康马县| 新蔡县| 乌拉特前旗| 宣武区| 民勤县| 林州市| 宁都县| 阆中市| 湖州市| 日喀则市| 汉中市| 湖州市| 随州市| 石屏县| 措美县| 增城市| 三亚市| 成都市| 尼玛县| 平谷区| 靖江市| 长宁县| 嵩明县| 灵台县| 潞西市|