PDA

View Full Version : درج عکس با دستور Insert SQL



arman_Delta2002
دوشنبه 16 دی 1387, 20:49 عصر
سلام
میخوام چند فیلد از نوع بولین و تکست و تصویر رو با بک دستور Insert SQL بدون استفاده از دستور پارامتر دهی و مستقیم در بانک درج کنم میشه شکل کلی درج تصویر رو هم ضمیمه کنین.
من یه چند تا برنامه پیدا کردم ولی بدردم نخورد چون یک بافر تعریف شوده بود .

AminSobati
سه شنبه 17 دی 1387, 00:42 صبح
http://barnamenevis.org/forum/showthread.php?t=70384
http://msdn2.microsoft.com/en-us/library/4f5s1we0(vs.80).aspx

arman_Delta2002
سه شنبه 17 دی 1387, 16:46 عصر
شرمنده ولی این آدرس ها هم کمکم نکردند .
کد من اینه

Dim ms As New MemoryStream()
PictureBox_Users_Add_PassWordLogin.Image.Save(ms, PictureBox_Users_Add_PassWordLogin.Image.RawFormat )
Dim arrImage() As Byte = ms.GetBuffer

SQLScript = "INSERT INTO Delta_Users " & _
"(نام," & _
"[نام خانوادگی]," & _
"[نام کاربری]," & _
"[تلفن تماس]," & _
"آدرس," & _
"[تنظیمات وسیله نقلیه]," & _
"[نوع وسیله نقلیه]," & _
"[شماره پلاک]," & _
"سمت," & _
"[مدیریت سطح دسترسی]," & _
"[اظافه سطح دسترسی]," & _
"[ویرایش سطح دسترسی]," & _
"[حذف سطح دسترسی]," & _
"[نمایش سطح دسترسی]," & _
"[گزارش سطح دسترسی]," & _
"[وجین سطح دسترسی]," & _
"[انتخاب سطح دسترسی]," & _
"[جستجو سطح دسترسی]," & _
"[اخبار سطح دسترسی]," & _
"[تنظیمات سطح دسترسی]," & _
"[نوار ابزار سطح دسترسی]," & _
"[سیستم چت سطح دسترسی]," & _
"[ارسال صدا سطح دسترسی]," & _
"[ارسال شکلک سطح دسترسی]," & _
"[ارسال فایل سطح دسترسی]," & _
"[کنفرانس سطح دسترسی]," & _
"[چت روم سطح دسترسی]," & _
"تصویر," & _
"[گروه اصلی]," & _
"[زیر گروه]," & _
"وجین," & _
"[زمان ایجاد]) VALUES " & _
"( '" & TextBox_FName_Add_PassWordLogin.Text & "' , '" & _
TextBox_LName_Add_PassWordLogin.Text & "' , '" & _
TextBox_UserName_Add_PassWordLogin.Text & "' , '" & _
TextBox_TellPhone_Add_PassWordLogin.Text & "' , '" & _
TextBox_Address_Add_PassWordLogin.Text & "' , '" & _
TextBox_OptionButton_VasilehNagliyeh_PassWordLogin .Text & "' , '" & _
TextBox_NoehVasilehNagliyeh_Add_PassWordLogin.Text & "' , '" & _
TextBox_ShomarehPelak_Add_PassWordLogin.Text & "' , '" & _
TextBox_Semat_Level_Add_PassWordLogin.Text & "' , '" & _
TextBox_OptionButton_Modiriyat_PassWordLogin.Text & "' , " & _
ArrayCheckBox(0) & " , " & _
ArrayCheckBox(1) & " , " & _
ArrayCheckBox(2) & " , " & _
ArrayCheckBox(3) & " , " & _
ArrayCheckBox(4) & " , " & _
ArrayCheckBox(5) & " , " & _
ArrayCheckBox(6) & " , " & _
ArrayCheckBox(7) & " , " & _
ArrayCheckBox(8) & " , " & _
ArrayCheckBox(9) & " , " & _
ArrayCheckBox(10) & " , " & _
ArrayCheckBox(11) & " , " & _
ArrayCheckBox(12) & " , " & _
ArrayCheckBox(13) & " , " & _
ArrayCheckBox(14) & " , " & _
ArrayCheckBox(15) & " , " & _
ArrayCheckBox(16) & " , '" & _
arrImage & "' , '" & _
ComboBox_BaseGrup_Add_PassWordLogin.Text & "' , '" & _
ComboBox_SubGrup_Add_PassWordLogin.Text & "' , " & _
"' " & "' , '" & _
" ')"
که میگه نمیشه مقدار arrImage رو با علامت & نسبط داد .
کمک کنید

AminSobati
سه شنبه 17 دی 1387, 16:51 عصر
OpenRowSet نیاز داره تا فایل تصویر در دسترس SQL Server باشه. اگر فایل روی Client قرار داره میبایست احتمالا با Steaming تصویر رو Insert کنید. در بخشهای VB و Delphi کدش رو دوستان نوشتن

reza10203045
سه شنبه 17 دی 1387, 18:05 عصر
دوست عزیز به این کد هم نگاه کردی که در بالا آقای aminsobati لینک شو گذاشته بود

Public Shared Sub AddEmployee( _
lastName As String, _
firstName As String, _
title As String, _
hireDate As DateTime, _
reportsTo As Integer, _
photoFilePath As String, _
connectionString As String)

Dim photo() as Byte = GetPhoto(photoFilePath)

Using connection As SqlConnection = New SqlConnection( _
connectionString)

Dim command As SqlCommand = New SqlCommand( _
"INSERT INTO Employees (LastName, FirstName, Title, " & _
"HireDate, ReportsTo, Photo) " & _
"Values(@LastName, @FirstName, @Title, " & _
"@HireDate, @ReportsTo, @Photo)", connection)

command.Parameters.Add("@LastName", _
SqlDbType.NVarChar, 20).Value = lastName
command.Parameters.Add("@FirstName", _
SqlDbType.NVarChar, 10).Value = firstName
command.Parameters.Add("@Title", _
SqlDbType.NVarChar, 30).Value = title
command.Parameters.Add("@HireDate", _
SqlDbType.DateTime).Value = hireDate
command.Parameters.Add("@ReportsTo", _
SqlDbType.Int).Value = reportsTo

command.Parameters.Add("@Photo", _
SqlDbType.Image, photo.Length).Value = photo

connection.Open()
command.ExecuteNonQuery()

End Using
End Sub

Public Shared Function GetPhoto(filePath As String) As Byte()
Dim stream As FileStream = new FileStream( _
filePath, FileMode.Open, FileAccess.Read)
Dim reader As BinaryReader = new BinaryReader(stream)

Dim photo() As Byte = reader.ReadBytes(stream.Length)

reader.Close()
stream.Close()

Return photo
End Function

arman_Delta2002
سه شنبه 17 دی 1387, 20:48 عصر
بله ولی من از پارامتر ها استفاده نمیکنم . :عصبانی++: