امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در ذخیره عکس به صورت دستی
نویسنده پیام
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #1
مشکل در ذخیره عکس به صورت دستی
سلام
من کد زیر نوشتم

کد:
CREATE PROCEDURE AddToPicture(@ID int, @TitleImage nvarchar(300), @Image varbinary(MAX)) AS
Begin
 Begin Try
   BEGIN TRANSACTION
     
          INSERT INTO TImage
              (
                IID, ITitleImage, IImage
              )
          VALUES
              (
                @ID, @TitleImage, @Image  
              )
          COMMIT
 
 End Try
 Begin CATCH
   IF @@TRANCOUNT > 0
     ROLLBACK
 End CATCH
End


حالا چطوری میتونم از این کد استفاده کنم و یک عکس ذخیره کنم؟؟؟؟ من کد زیر نوشتم ولی کار نمیکنه!!!!!!!!


کد:
EXEC  AddToPicture 1,'Book',D:\12.jpg

لطفا اگه کسی میتونه راهنمایی کنه ممنون میشم اینکار را انجام بده.

با تشکر.

Assembly Language 039

۱۰-اردیبهشت-۱۳۹۵, ۰۲:۰۸:۳۷
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #2
RE: مشکل در ذخیره عکس به صورت دستی
همون طور که خودت نوشتی، آخرین آرگومان Stored Procedure شما، از نوع باینری هست.
پس چرا وقتی میخواستی SP رو کال کنی، تو آرگومان آخر صرفاً آدرس فایل رو دادی؟؟ باید خود فایل رو به صورت باینری باز کنی و به SP بدی.

پارک24
مرجع خرید و فروش خودرو
۱۰-اردیبهشت-۱۳۹۵, ۰۲:۲۳:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #3
RE: مشکل در ذخیره عکس به صورت دستی
میشه لطفا راهنمایی کنید باید به چه صورتی بنویسم؟؟؟

هر کاری می کنم درست نمیشه؟؟؟؟

لطفا اگه امکانش هست خواهش می کنم کمک کنید.

با تشکر.

Assembly Language 039

۱۰-اردیبهشت-۱۳۹۵, ۰۲:۴۶:۱۷
ارسال‌ها
پاسخ
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #4
RE: مشکل در ذخیره عکس به صورت دستی
دوستان میشه راهنمایی کنید که چرا کد شماره یک به درستی اجراء میشه ولی کد شماره دو پیغام خطا میده؟؟؟؟

در کد شماره دو فقط آدرس عکس را می خواهم به صورت یک متغییر بدم ولی قبول نمیکنه!!!! اما اگه آدرس عکس ثابت بنویسم مثل کد یک به درستی اجرا میشه؟؟؟؟!!!

لطفا در این مورد راهنمایی کنید.


کد:
-- Code 1

CREATE PROCEDURE AddToPicture(@ID int, @TitleImage nvarchar(300), @PathFile nvarchar(500)) AS
Begin
Begin Try
  BEGIN TRANSACTION

       Insert Into TImage(IID, ITitleImage, IImage)       -- IImage varbinary(MAX)
       Select @ID, @TitleImage, BulkColumn
       from Openrowset (Bulk  'D:\12.jpg', Single_Blob) as Image

       COMMIT

End Try
Begin CATCH
  IF @@TRANCOUNT > 0
    ROLLBACK
End CATCH
End


-

کد:
-- Code 2

CREATE PROCEDURE AddToPicture(@ID int, @TitleImage nvarchar(300), @PathFile nvarchar(500)) AS
Begin
Begin Try
  BEGIN TRANSACTION

       Insert Into TImage(IID, ITitleImage, IImage)       -- IImage varbinary(MAX)
       Select @ID, @TitleImage, BulkColumn
       from Openrowset (Bulk  @PathFile, Single_Blob) as Image

       COMMIT

End Try
Begin CATCH
  IF @@TRANCOUNT > 0
    ROLLBACK
End CATCH
End

Assembly Language 039

۱۰-اردیبهشت-۱۳۹۵, ۰۴:۲۹:۲۸
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #5
RE: مشکل در ذخیره عکس به صورت دستی
اینم تمام چیزی که بهش احتیاج داری:
کد:
            DECLARE @q nvarchar(MAX);
            SET @q= 'INSERT INTO TImage(IID, ITitleImage, IImage) SELECT ' + @ImageID + ',' + CHAR(39) + @ImageTitle + CHAR(39) + ' , BulkColumn FROM Openrowset( Bulk ' + CHAR(39) + @ImagePath + CHAR(39) + ', Single_Blob) as img'
            EXEC(@q)

پارک24
مرجع خرید و فروش خودرو
۱۰-اردیبهشت-۱۳۹۵, ۱۲:۰۴:۰۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #6
RE: مشکل در ذخیره عکس به صورت دستی
من این کد اینطوری نوشتم ولی پیغام خطا میده؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!

کد:
CREATE PROCEDURE AddToPic(@ImageID int, @ImageTitle nvarchar(300), @ImagePath nvarchar(500)) AS
Begin
    DECLARE @q nvarchar(MAX);
    SET @q= 'INSERT INTO TImage(IID, ITitleImage, IImage) SELECT ' + @ImageID + ',' + CHAR(39) + @ImageTitle + CHAR(39) + ' , BulkColumn FROM Openrowset( Bulk ' + CHAR(39) + @ImagePath + CHAR(39) + ', Single_Blob) as img'
    EXEC(@q)
End

کد:
EXEC AddToPic 2, 'Book', 'D:\12.jpg'


پیغام خطای زیر میده؟

کد:
Msg 245, Level 16, State 1, Procedure AddToPic, Line 5
Conversion failed when converting the varchar value 'INSERT INTO TImage(IID, ITitleImage, IImage) SELECT ' to data type int.

Assembly Language 039

۱۰-اردیبهشت-۱۳۹۵, ۱۴:۰۸:۳۵
ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #7
RE: مشکل در ذخیره عکس به صورت دستی
مشکل از اینجاست که @ImageID از نوع Int تعریف شده، پس با CAST کردن نوعش همه چیز حل میشه.

SP شما به این صورت باید نوشته بشه:
کد:
CREATE PROCEDURE AddToPic(@ImageID int, @ImageTitle nvarchar(300), @ImagePath nvarchar(500)) AS
Begin
   DECLARE @q nvarchar(MAX);
   SET @q= 'INSERT INTO TImage(IID, ITitleImage, IImage) SELECT ' + CAST(@ImageID AS varchar(max)) + ',' + CHAR(39) + @ImageTitle + CHAR(39) + ' , BulkColumn FROM Openrowset( Bulk ' + CHAR(39) + @ImagePath + CHAR(39) + ', Single_Blob) as img'
   EXEC(@q)
End

پارک24
مرجع خرید و فروش خودرو
۱۰-اردیبهشت-۱۳۹۵, ۱۵:۲۸:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost, Ghoghnus
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #8
RE: مشکل در ذخیره عکس به صورت دستی
سلام جناب [b]far_222000 [/b]

به نظر شما اینکه عکس را کامل داخل دیتابیس ذخیره کنیم کار درستیه؟اگه ادرس را ذخیره کنیم بهتر نیست؟

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۱۱-اردیبهشت-۱۳۹۵, ۱۲:۳۵:۵۳
وب سایت ارسال‌ها
پاسخ
far_222000 آفلاین
مدير بخش ديتابيس
*****

ارسال‌ها: 955
موضوع‌ها: 68
تاریخ عضویت: شهریور ۱۳۸۴

تشکرها : 468
( 1249 تشکر در 422 ارسال )
ارسال: #9
RE: مشکل در ذخیره عکس به صورت دستی
سلام

خیلی سوال خوبی پرسیدید. ممنونم.

به صورت کلی بنده هیچ وقت توصیه نمی کنم که یه فایل توی دیتابیس ذخیره بشه. چون خوندن بایت به بایت از دیتابیس، سرعت رو کاهش میده و منابع سیستم رو درگیر خودش میکنه. اما این مسأله باید کیس بای کیس بررسی بشه. مثلاً در پروژه ای، احتیاج هست که فایل ها در جای امنی به جز روی هارد نگه داری بشن، خب یکی از راه ها اینه که فایل ها رو به دیتابیس منتقل کنیم. در جایی فایل ها دائم درحال جابجایی هستن، لذا نمی تونیم آدرسشون رو صرفاً در دیتابیس ذخیره کنیم پس مجبوریم خود فایل ها رو در دیتابیس ذخیره کنیم.
اما تا حد امکان باید از این کار جلوگیری بشه چون سرعت نرم افزار به شکل بسیار بسیار محسوسی کاهش پیدا میکنه. لذا اگه مجبور نباشیم خود فایل رو ذخیره کنیم، بهترین کار همونطور که فرمودین، ذخیره آدرس ها هستش.

پارک24
مرجع خرید و فروش خودرو
۱۱-اردیبهشت-۱۳۹۵, ۱۴:۴۶:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ghoghnus, Di Di, The.Ghost, babyy
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #10
RE: مشکل در ذخیره عکس به صورت دستی
سلام
دوست گرامی کدی که شما نوشتید به درستی کار میکنه و هیچ مشکلی نداره.
ولی فقط اگر آدرس عکس در یک مسیر طولانی باشه این کد کار نمیکند، یعنی اگر جایی که عکس در آنجا قرار داد مسیر طولانی باشد این کد کار نمی کند!!!
لطفا راهنمایی کنید که باید چه کار کنم؟؟؟؟؟؟

با تشکر

Assembly Language 039

۱۵-اردیبهشت-۱۳۹۵, ۱۰:۳۹:۳۱
ارسال‌ها
پاسخ
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #11
RE: مشکل در ذخیره عکس به صورت دستی
(۱۵-اردیبهشت-۱۳۹۵, ۱۰:۳۹:۳۱)The.Ghost نوشته است: سلام
دوست گرامی کدی که شما نوشتید به درستی کار میکنه و هیچ مشکلی نداره.
ولی فقط اگر آدرس عکس در یک مسیر طولانی باشه این کد کار نمیکند، یعنی اگر جایی که عکس در آنجا قرار داد مسیر طولانی باشد این کد کار نمی کند!!!
لطفا راهنمایی کنید که باید چه کار کنم؟؟؟؟؟؟

با تشکر

ُسلام
اول عکس را به عنوان تمپ در یک مسیر ذخیره کن بعد هر بار اون مسیر را بهش بده :|

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۱۶-اردیبهشت-۱۳۹۵, ۰۰:۱۵:۵۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Shy نحوه ذخیره عکس در SQL eli_j0o0o0n 26 37,416 ۲۲-فروردین-۱۴۰۰, ۱۴:۳۷:۰۱
آخرین ارسال: VidaSalehi
  ذخیره سورس وب در یک فیلد javaweb 1 2,322 ۱۴-شهریور-۱۳۹۳, ۱۱:۱۹:۲۰
آخرین ارسال: lord_viper
  [سوال] bit , tinyint ,real چه نوع فیلدی را ذخیره می کننه mehrdad8 0 1,945 ۱۲-خرداد-۱۳۹۲, ۰۱:۲۳:۵۳
آخرین ارسال: mehrdad8
  نحوه ی ذخیره پایگاه داده روی یک حافظه جانبی مثل سی دی یا فلش؟ mohsen70007 4 15,459 ۲۶-آبان-۱۳۹۱, ۰۲:۲۸:۳۲
آخرین ارسال: hosseinmm2
Sad نحوه ذخیره کردن اطلاعات insert یا delete شده بر روی database mostafa-Ce 7 18,432 ۱۸-مرداد-۱۳۸۹, ۲۱:۳۴:۴۰
آخرین ارسال: mostafa-Ce
  نصب سرور برنامه sql server به صورت خودکار mahsa-h 4 8,234 ۲۷-تير-۱۳۸۷, ۰۵:۵۰:۲۷
آخرین ارسال: maleks
Question ذخیره نتیجه یک دستور سلکت در داخل یک تیبل saeed_vbvb 1 3,565 ۲۴-اسفند-۱۳۸۵, ۲۰:۵۱:۰۰
آخرین ارسال: esmaeily-hosein

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS