QnA
사용언어 (칠해주세요) => (C#,VB) |
사용툴 (VS) : |
운영체제 (OS) : |
vb.net 2010 에서 filestream 을 사용 하여 DB에 엑셀 파일을 자체를 저장하려고 합니다.
엑셀내용이 아니라....엑셀 파일 자체를 DB에 저장하는 겁니다!!!!
아래는 제가 구현한 소스인데.. 잘 못된 겁니다.. 저장은 되는데 엑셀 파일을 불러오면 다 깨지거든요..
어떻게 하면 DB에 저장을 할 수 있는 지 알려 주시면 감사하겠습니다.
부탁드립니다..ㅠㅠ
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim strInFile As String = OpenFileDialog1.FileName
Dim intsaveLength As Integer
Dim fs As FileStream
Dim br As BinaryReader
Dim info As New FileInfo(strInFile)
Dim saveFile(CInt(info.Length)) As Byte
fs = New FileStream(strInFile, FileMode.Open, FileAccess.Read)
br = New BinaryReader(fs)
saveFile = br.ReadBytes(CInt(info.Length))
intsaveLength = Int(CType(saveFile.Length, Integer))
Dim strBase64saveFile As String = Convert.ToBase64String(saveFile)
Dim cmd As New SqlCommand("insert into filetest (filename, filesave) values(@filename, @filesave)", adoCon)
cmd.Parameters.Add("@filename", SqlDbType.NVarChar, 50).Value = TextBox1.Text
Dim P As New SqlParameter("@filesave", strBase64saveFile)
cmd.Parameters.Add(P)
cmd.ExecuteNonQuery()
MsgBox("저장되었습니다!..")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SaveFileDialog1.ShowDialog()
Dim PictureCol As Integer = 0
Dim cmd As New SqlCommand("SELECT filesave FROM filetest WHERE filename = '" & TextBox1.Text & "'", adoCon)
Dim dr As SqlDataReader = cmd.ExecuteReader()
dr.Read()
Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
dr.GetBytes(PictureCol, 0, b, 0, b.Length)
dr.Close()
Dim fs As New System.IO.FileStream(SaveFileDialog1.FileName, IO.FileMode.Create, IO.FileAccess.Write)
fs.Write(b, 0, b.Length)
fs.Close()
End Sub