PDA

View Full Version : سوال: نحوه ذخیره مستقیم عکس یا باینری در sql server



behnam.abedini
سه شنبه 18 آبان 1389, 13:15 عصر
سلام دوستان
من هرچقد گشتم نتونستم واسه این موضوع جوابی پیدا کنم اگه می تونین کمک کنین لطفا

آیا میشه بدون یه برنامه جانبی و فقط با sql server در داخل خود این برنامه نوع image یا binary رو ذخیره سازی کرد.ممنون میشم اگه کمکم کنید

حمیدرضاصادقیان
چهارشنبه 19 آبان 1389, 08:29 صبح
سلام.
منظورتون از اینکه بدون برنامه جانبی اینکارو بکنید یعنی چی؟

Rezahak
چهارشنبه 19 آبان 1389, 16:19 عصر
شما مي تونيد يك stored procedure بنويسيد كه يك پارامتر از نوع image يا binary داشته باشد كه محتويات را به فيلد مورد نظر در table بفرستد حالا مسئله اينجاست كه شما چطور مي خواهيد محتويات تصوير يا فايل باينري را به اين پارامتر ارسال كنيد . خب استفاده از زبانهاي برنامه نويسي (اگر منظورتان از برنامه جانبي همين باشد) به اين دليل است كه آنها حاوي object ها و method هايي هستند كه قادرند اين ارتباط را برقرار كرده و محتواي فايلهاي باينري را در اين پارامترها ياstream ها قرار دهند

behnam.abedini
سه شنبه 25 آبان 1389, 13:08 عصر
خیلی ممنون که جواب دادین.
بزارین یجور دیگه بگم:
بطور مثال ما یه جدولی با فیلدهای گوناگون(مثلا نوع intوstringو...) ایجاد میکنیم و میتونیم داخل خود sql اونارو edit کنیم و به اونا مقدار بدیم ولی نوع عکس و یا باینری رو نمیشه از همونجا مقداردهی کرد!!!!!!!!!!
یعنی با نوشتن procedure میشه این کارو انجام داد؟؟؟؟اگه امکانش هست بیشتر کمکم کنید(ممنون)

Rezahak
سه شنبه 25 آبان 1389, 13:48 عصر
ببينيد مشكل اينه كه شما محتويات فيلدهاي غير باينري مثل int و char و ... رو ميتوانيد ببينيد و مقداردهي كنيد ولي محتويات يك فايل باينري توسط يك برنامه يا object جانبي قابل رويت يا مقداردهي است!!!!
با خود sql server (مثلا با stored procedure) هم مي شود آنرا مقداردهي كرد ولي اين مقدار بايد از طريق يك برنامه ديگر به sql server ارسال شود

Reza_Yarahmadi
سه شنبه 25 آبان 1389, 15:38 عصر
براي اينكه يك فايل رو توسط دستورات SQL توي بانك ذخيره كرد بصورت زير بايد عمل كنيد

INSERT INTO myTable(FileName, FileType, Document)
SELECT
'Text1.txt' AS FileName,
'.txt' AS FileType,
*
FROM
OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
براي تغيير دادنش هم بصورت دستي (هر چند چندان منطقي نيست)

Update TableName Set FieldName = 0x88888888888888888888 Where ...
هر 2 رقم به عنوان يك بايت ذخيره ميشه.

behnam.abedini
جمعه 28 آبان 1389, 10:01 صبح
خیلی ممنون از لطفتون
ذخیره سازی توسط یه برنامه دیگرو بلد بودم فقط میخواستم بدونم که توسط خود sql هم میشه مقدار دهی کرد که امکان پذیر نیست.
بازم ممنون که کمکم کردین