Может ли кто-нибудь помочь мне открыть файл?
Hello, I have a project, where I want to save pdf, doc, xls files in an ole object field in an accdb database. Until the part of saving and reading I could do, but then the part is missing to open, can someone help me?
Для сохранения файлов я написал этот код:
Private Builder As New OleDbConnectionStringBuilder With _ { _ .DataSource = IO.Path.Combine(Application.StartupPath, "SIGCB.accdb"), _ .Provider = "Microsoft.ACE.OLEDB.12.0" _ } Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim cn As New OleDbConnection With {.ConnectionString = Builder.ConnectionString} Dim cmd As New OleDbCommand With {.Connection = cn} Dim dr As OleDbDataReader = Nothing Dim FileStream As System.IO.FileStream Dim Reader As System.IO.BinaryReader = Nothing Dim Data() As Byte = Nothing FileStream = New System.IO.FileStream( IO.Path.Combine(Application.StartupPath, Localização_do_Ficheiro_TB.Text), System.IO.FileMode.Open, System.IO.FileAccess.Read) Reader = New System.IO.BinaryReader(FileStream) Data = Reader.ReadBytes(CInt(FileStream.Length)) cn.Open() cmd.CommandText = "INSERT INTO Data_Ficheiros (IDB_NINT, IDB_NMECAN, IDB_NOMEABV, ARQ_DATA, ARQ_DESC, ARQ_FILE) VALUES(@IDB_NINT,@IDB_NMECAN,@IDB_NOMEABV,@ARQ_DATA,@ARQ_DESC,@ARQ_FILE)" cmd.Connection = cn cmd.Parameters.Add("@IDB_NMECAN", System.Data.OleDb.OleDbType.WChar) cmd.Parameters(0).Value = Nº_Interno_TB.Text cmd.Parameters.Add("@IDB_NMECAN", System.Data.OleDb.OleDbType.WChar) cmd.Parameters(1).Value = Nº_Mecanográfico_TB.Text cmd.Parameters.Add("@IDB_NOMEABV", System.Data.OleDb.OleDbType.WChar) cmd.Parameters(2).Value = Nome_TB.Text cmd.Parameters.Add("@ARQ_DATA", System.Data.OleDb.OleDbType.WChar) cmd.Parameters(3).Value = Data_Ficheiro_TB.Text cmd.Parameters.Add("@ARQ_DESC", System.Data.OleDb.OleDbType.WChar) cmd.Parameters(4).Value = Descrição_Ficheiro_TB.Text cmd.Parameters.Add("@ARQ_FILE", System.Data.OleDb.OleDbType.LongVarBinary) cmd.Parameters(5).Value = Data cmd.ExecuteNonQuery() cn.Close() End Sub
Что я уже пробовал:
А это для чтения файла
Dim cn As New OleDbConnection With {.ConnectionString = Builder.ConnectionString} Dim cmd As New OleDbCommand With _ { _ .Connection = cn, _ .CommandText = "SELECT ARQ_FILE FROM Data_Ficheiros Where ARQ_FILE= ARQ_FILE" _ } Dim dr As OleDbDataReader = Nothing Dim FileStream As System.IO.FileStream Dim Reader As OleDbDataReader Dim Data() As Byte = Nothing Dim Writer As System.IO.BinaryWriter = Nothing Dim bufferSize As Integer = 1000 Dim buffer(bufferSize - 1) As Byte Dim startIndex As Long = 0 Dim numberOfBytes As Long = 0 cn.Open() Reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess) Reader.Read() FileStream = New System.IO.FileStream( IO.Path.Combine(Application.StartupPath, Localização_do_Ficheiro_TB.Text), System.IO.FileMode.Open, System.IO.FileAccess.Write) Writer = New System.IO.BinaryWriter(FileStream) Do numberOfBytes = Reader.GetBytes(0, startIndex, buffer, 0, bufferSize) If numberOfBytes = 0 Then Exit Do End If Writer.Write(buffer, 0, CInt(Fix(numberOfBytes))) startIndex += numberOfBytes Loop While True Writer.Flush() If Writer IsNot Nothing Then Writer.Close() End If If FileStream IsNot Nothing Then FileStream.Close() End If If Reader IsNot Nothing Then Reader.Close() End If cn.Close() MessageBox.Show("Done")
Теперь, как я его открою?
Richard MacCutchan
Пожалуйста, не повторяйте один и тот же вопрос. Мы уже ответили на этот вопрос в вашем оригинале.
Richard MacCutchan
И вы все еще не откорректированы инструкции Select.