PDA

View Full Version : میشه یه برنامه یا یک فایل رو به یه دیتابیس بدیم؟



hex161
دوشنبه 16 خرداد 1384, 16:13 عصر
با سلام .
میخواستم بدونم که آیا میشه یه برنامه یا یک فایل رو به یه دیتا بیس چسیباند؟
مثلا یه عکس یا یک فایل دیگه رو تو دیتابیس بزاریم که اون برنامه یا عکس دیگه کنار دیتابیس نباشه. یعنی تو خود دیتابیس باشه .
ممنون .

sadegi
دوشنبه 16 خرداد 1384, 18:54 عصر
دوست عزیز البته که میشه
فقط باید توجه کنی که حجم فایلت زیاد نباشه که سرعت پایین میاد
برای ساخت چنین جدولی میتونی از access استفاده کنی (البته تو visdata هم میشه ولی access بهتره)
فقط باید نوع فیلد مربوطه رو OleObject رو انتخاب کنی
باز هم اگه مشکلی بود ما در خدمتیم
:flower: :flower: :flower:

vbadvanced
چهارشنبه 18 خرداد 1384, 13:32 عصر
اگه از طریق کد هم میخوای اینکار رو بکنی میتونی از متدهای (اگه املاش درست یادم باشه)GetChunk و AppendChunk استفاده کنی. این متد از متدهای شیئ Field توی ado و dao هست.
نوع فیلد هم همونطور که دوستمون گفتند باید ole باشه.


Public Sub Main()
On Error GoTo ErrorHandler

'recordset and connection variables
Dim Cnxn As ADODB.Connection
Dim strCnxn As String
Dim rstPubInfo As ADODB.Recordset
Dim strSQLPubInfo As String
'record variables
Dim strPubID As String
Dim strPRInfo As String
Dim lngOffset As Long
Dim lngLogoSize As Long
Dim varLogo As Variant
Dim varChunk As Variant
Dim strMsg As String

Const conChunkSize = 100

' Open a connection
Set Cnxn = New ADODB.Connection
strCnxn = "Provider='sqloledb';Data Source='MySqlServer';" & _
"Initial Catalog='Pubs';Integrated Security='SSPI';"
Cnxn.Open strCnxn

' Open the pub_info table with a cursor that allows updates
Set rstPubInfo = New ADODB.Recordset
strSQLPubInfo = "pub_info"
rstPubInfo.Open strSQLPubInfo, Cnxn, adOpenKeyset, adLockOptimistic, adCmdTable

' Prompt for a logo to copy
strMsg = "Available logos are : " & vbCr & vbCr
Do While Not rstPubInfo.EOF
strMsg = strMsg & rstPubInfo!pub_id & vbCr & _
Left(rstPubInfo!pr_info, InStr(rstPubInfo!pr_info, ",") - 1) & _
vbCr & vbCr
rstPubInfo.MoveNext
Loop

strMsg = strMsg & "Enter the ID of a logo to copy:"
strPubID = InputBox(strMsg)

' Copy the logo to a variable in chunks
rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
lngLogoSize = rstPubInfo!logo.ActualSize
Do While lngOffset < lngLogoSize
varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
varLogo = varLogo & varChunk
lngOffset = lngOffset + conChunkSize
Loop

' Get data from the user
strPubID = Trim(InputBox("Enter a new pub ID" & _
" [must be > 9899 & < 9999]:"))

strPRInfo = Trim(InputBox("Enter descriptive text:"))

' Add the new publisher to the publishers table to avoid
' getting an error due to foreign key constraint
Cnxn.Execute "INSERT publishers(pub_id, pub_name) VALUES('" & _
strPubID & "','Your Test Publisher')"

' Add a new record, copying the logo in chunks
rstPubInfo.AddNew
rstPubInfo!pub_id = strPubID
rstPubInfo!pr_info = strPRInfo

lngOffset = 0 ' Reset offset
Do While lngOffset < lngLogoSize
varChunk = LeftB(RightB(varLogo, lngLogoSize - lngOffset), _
conChunkSize)
rstPubInfo!logo.AppendChunk varChunk
lngOffset = lngOffset + conChunkSize
Loop
rstPubInfo.Update

' Show the newly added data
MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _
"Description: " & rstPubInfo!pr_info & vbCr & _
"Logo size: " & rstPubInfo!logo.ActualSize

' Delete new records because this is a demo
rstPubInfo.Requery
Cnxn.Execute "DELETE FROM pub_info " & _
"WHERE pub_id = '" & strPubID & "'"

Cnxn.Execute "DELETE FROM publishers " & _
"WHERE pub_id = '" & strPubID & "'"

' clean up
rstPubInfo.Close
Cnxn.Close
Set rstPubInfo = Nothing
Set Cnxn = Nothing
Exit Sub

ErrorHandler:
' clean up
If Not rstPubInfo Is Nothing Then
If rstPubInfo.State = adStateOpen Then rstPubInfo.Close
End If
Set rstPubInfo = Nothing

If Not Cnxn Is Nothing Then
If Cnxn.State = adStateOpen Then Cnxn.Close
End If
Set Cnxn = Nothing

If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
:strange:
البته خیلی ساده تر از این حرفا هم میتونه باشه. :mrgreen:

hadi2345
چهارشنبه 18 خرداد 1384, 17:47 عصر
با سلام .
اگه دیدی که حجم فایلت خیلی زیاده ، میتونی مسیر اون فایلو تو دیتابیس ذخیره کنی و هر وقت لازم داشتی فایل مورد نظرتو از مسیرش ورداری (البته از لحاظ امنیتی زیاد جالب نست) .
موفق باشید .
-----------------
Ride On Light :)