⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repositoryfile.vb

📁 大文件上传组件
💻 VB
字号:
Imports Microsoft.VisualBasic
Imports Krystalware.SlickUpload.Configuration
Imports Krystalware.SlickUpload.Streams
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO

Public Class RepositoryFile
    Private Shared _cnString As String
    Private Shared _table As String
    Private Shared _keyField As String
    Private Shared _nameField As String
    Private Shared _dataField As String

    Private _id As Integer
    Private _name As String
    Private _length As Long

    Public ReadOnly Property Id() As Integer
        Get
            Return _id
        End Get
    End Property

    Public ReadOnly Property Name() As String
        Get
            Return _name
        End Get
    End Property

    Public ReadOnly Property Length() As Long
        Get
            Return _length
        End Get
    End Property

    Shared Sub New()
        Dim section As NameValueConfigurationSection = SlickUploadConfiguration.UploadStreamProvider

        Dim connectionStringName As String = section("connectionStringName")

        If Not String.IsNullOrEmpty(connectionStringName) Then
            _cnString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString
        Else
            _cnString = section("connectionString")
        End If

        _table = section("table")
        _keyField = section("keyField")
        _nameField = section("fileNameField")
        _dataField = section("dataField")
    End Sub

    Public Sub New(ByVal id As Integer, ByVal name As String, ByVal length As Long)
        _id = id
        _name = name
        _length = length
    End Sub

    Public Function GetDataStream() As Stream
        Return New SqlClientOutputStream(_cnString, _table, _dataField, _keyField, _id)
    End Function

    Public Shared Function GetAll() As List(Of RepositoryFile)
        Dim files As List(Of RepositoryFile) = New List(Of RepositoryFile)()

        Using cn As IDbConnection = New SqlConnection(_cnString)
            Using cmd As IDbCommand = cn.CreateCommand()
                cmd.CommandText = "SELECT " + _keyField + ", " + _nameField + ", CAST(DATALENGTH(" + _dataField + ") AS bigint) AS Length FROM " + _table

                cn.Open()

                Using rd As IDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult)
                    While (rd.Read())
                        files.Add(New RepositoryFile(rd.GetInt32(0), rd.GetString(1), rd.GetInt64(2)))
                    End While
                End Using
            End Using
        End Using

        Return files
    End Function

    Public Shared Function GetById(ByVal id As Integer) As RepositoryFile
        Using cn As IDbConnection = New SqlConnection(_cnString)
            Using cmd As IDbCommand = cn.CreateCommand()
                cmd.CommandText = "SELECT " + _nameField + ", CAST(DATALENGTH(" + _dataField + ") AS bigint) AS Length FROM " + _table + " WHERE " + _keyField + "=" + id.ToString()

                cn.Open()

                Using rd As IDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)
                    If rd.Read() Then
                        Return New RepositoryFile(id, rd.GetString(0), rd.GetInt64(1))
                    Else
                        Return Nothing
                    End If
                End Using
            End Using
        End Using
    End Function
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -