سلام
اگه تجربه تون کم باشه حق دارید متوجه نشید
همین اول اومدید ذخیره تدریجی (چند مرحله ای) فایل اونم با قابلیت سوئیچ بین دو نوع دیتابیس متفاوت رو خوندید !
این یه نمونه خیلی ساده:
Private Sub InsertWithFile(FilePath As String)
Dim DataBuffer = IO.File.ReadAllBytes(FilePath)
Dim FileName = IO.Path.GetFileName(FilePath)
Dim Cmd As New SqlClient.SqlCommand
Cmd.CommandText = "INSERT INTO [Table1] ([FileName],[FileData]) VALUES (@FileName,@FileData)"
Cmd.Parameters.AddWithValue("@FileName", FileName)
Cmd.Parameters.AddWithValue("@FileData", DataBuffer)
Using Conn As New SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestDb;Integrated Security=True")
Cmd.Connection = Conn
Conn.Open()
Cmd.ExecuteNonQuery()
Conn.Close()
End Using
End Sub
Private Function GetFileFromDB(FileID As Integer) As Byte()
Dim Cmd As New SqlClient.SqlCommand
Cmd.CommandText = "SELECT [FileName] FROM [Table1] WHERE ID =" & FileID
Using Conn As New SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestDb;Integrated Security=True")
Cmd.Connection = Conn
Conn.Open()
Dim Result = CType(Cmd.ExecuteScalar(), Byte())
Conn.Close()
Return Result
End Using
End Function
Private Sub LoadPicFromDb()
Dim FileData = GetFileFromDB(1)
Dim MS As New IO.MemoryStream(FileData)
PictureBox1.Image = Image.FromStream(MS)
End Sub
در ضمن دوستانی که می خوان از پروژه پست اول استفاده کنن می تونن تابع SaveFileIntoDB رو به صورت زیر تغییر بدن (خطوط ابتدایی) تا برای SQL Server بشه از 2005 استفاده کرد و هم سرعت ذخیره سای رو بالاتر ببرن
Try
Dim UpdOperator As String = "= @image"
If Append Then
If GetConnectionType() = ConnectionType.SQlServer Then
UpdOperator = ".WRITE(@image,NULL,NULL)"
ElseIf GetConnectionType() = ConnectionType.Access Then
UpdOperator = " = " & ColumnToStore & " + @image"
End If
End If
Dim TSQL As String = ""
TSQL = ""
TSQL &= String.Format("Update {0} SET {1}{2}", Table, ColumnToStore, UpdOperator) & vbNewLine