ورود

View Full Version : خواندن تصوير از ديتابيس SQL



behi1ty
یک شنبه 01 تیر 1393, 09:24 صبح
با سلام
چند روزي هست كه دارم مي گردم اما چيزي كه مي خوام و پيدا نكردم
برنامه با SQl Server كار مي كنه و اطلاعات و هم Insert و Select مي كنم اما مشكلم اينه كه مي خوام فيلدي كه داخلش عكس نگه مي دارم و بخونم و عكس و نشون كاربر بدم اما خطا مي ده
قبلا با SQl Lite اين كار و كرده ام اما با SQl server فكر مي كنم كدش فرق مي كنه چو. جواب نمي ده اگر جواب سوالم و بديد خيلي ممنون مي شم
با تشكر

behi1ty
یک شنبه 01 تیر 1393, 11:31 صبح
كسي نيست جواب سوال ما رو بده؟

c0mmander
یک شنبه 01 تیر 1393, 11:55 صبح
فکر کنم بصورت مستقیم که نمیشه. باید اول یک وب سرویس راهندازی کنی وبعد از طریق اون به سرور وصل بشی. این کار واقعا انجامش طولانی خسته کنندس.

behi1ty
یک شنبه 01 تیر 1393, 12:24 عصر
دوست عزيز ممنونم از جوابت اما من نمي خوام از وب سرويس استفاده كنم
فكر هم مي كنم شما سوال بنده را متوجه نشديد يا من خوب توضيح ندادم
من عكس ذخيره مي كنم
موقع خوندن نمي دونم با چه دستوري بخونمش Select هم مي زنم بقيه فيلد ها را درست مي خونه اين و نمي دونم با چه تايپي بگيرمش با getByte كه مي گيرم خطا مي ده.

rubiks.kde
یک شنبه 01 تیر 1393, 12:48 عصر
دوست عزيز ممنونم از جوابت اما من نمي خوام از وب سرويس استفاده كنم
فكر هم مي كنم شما سوال بنده را متوجه نشديد يا من خوب توضيح ندادم
من عكس ذخيره مي كنم
موقع خوندن نمي دونم با چه دستوري بخونمش Select هم مي زنم بقيه فيلد ها را درست مي خونه اين و نمي دونم با چه تايپي بگيرمش با getByte كه مي گيرم خطا مي ده.

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

behi1ty
یک شنبه 01 تیر 1393, 23:01 عصر
بله نشون می ده یعنی با رابطی مثل C# عکس و می بینم


query = "select top(1) Comment,ImgAndroid from tblimage";
Statement state = conn.createStatement();
ResultSet rs = state.executeQuery(query);
byte[] data2=data.getBytes();
Bitmap theimg = BitmapFactory.decodeByteArray(data2, 0, data2.length);

behi1ty
دوشنبه 02 تیر 1393, 12:30 عصر
هنوز کسی پیدا نشده بتونه جواب سوال بنده و بده؟

rubiks.kde
دوشنبه 02 تیر 1393, 12:47 عصر
شما باید به تابع getBytes() یک آرگومان بدهید و اون هم index فیلد مورد نظر در خروجی و یا اسم ستون فیلد مورد نظر در خروجی است.
مثلا توی این کویری شما ImgAndroid فیلد عکس باشه باید ۱ رو به عنوان آرگومان بدید.

behi1ty
دوشنبه 02 تیر 1393, 13:31 عصر
ممنونم اما مشکل از این نیست چون همین و نوشتم ایجچا که داشتم دوباره می نوشتم یادم رفته بود اینو بزارم

rubiks.kde
دوشنبه 02 تیر 1393, 14:12 عصر
ممنونم اما مشکل از این نیست چون همین و نوشتم ایجچا که داشتم دوباره می نوشتم یادم رفته بود اینو بزارم

در استفاده از این خطا دارید؟ برنامه کرش میکنه؟ اگه اره متن خطا رو در log cat بزارید

behi1ty
دوشنبه 02 تیر 1393, 22:22 عصر
نه دوست عزیز برنامه کرش نمی کنه اما مقدار theimg=null هست در صورتی که data مقدار دارد.

rubiks.kde
دوشنبه 02 تیر 1393, 23:32 عصر
نه دوست عزیز برنامه کرش نمی کنه اما مقدار theimg=null هست در صورتی که data مقدار دارد.

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

behi1ty
دوشنبه 02 تیر 1393, 23:47 عصر
کل کدم این هست


Bitmap[] Image = new Bitmap[40];
String[] re=new String[40];
byte[] data = null;
int i=0;
String query;
Connection();
try
{

Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(strIp,strUser,strPass) ;
query = "select top(1) Comment,ImgAndroid from tblimage";
Statement state = conn.createStatement();
Log.w("1", "state");
ResultSet rs = state.executeQuery(query);
Log.w("1", "Res");
while (rs.next())
{
data = rs.getBytes(2);
re[i]=rs.getString(1);
Log.w("1", i+"I");
i++;
}

Bitmap theimg = BitmapFactory.decodeByteArray(data, 0, data.length);
ViewImage.Image=theimg;
Log.w("1", "Ok");
}
catch (Exception e)
{
Log.w("1", "Wri");
e.printStackTrace();
}

rubiks.kde
سه شنبه 03 تیر 1393, 06:34 صبح
من متوجه منظورتون نشدم ، منظورتون اینه که data مقدار داره (یعنی عکس خونده شده) ولی theimg مقدار null داره و byte به bitmap تغییر نکرده؟

ظاهر کد درسته و مشکلی به چشم نمیخوره.
شما قسمت
catch (Exception e)
{
Log.w("1", "Wri");
e.printStackTrace();
}

رو به صورت
catch (Exception e)
{
Log.w("1", e.toString());
}

بنویسید ببینید ایا خطا رو براتون نمایش میده یا نه؟

behi1ty
سه شنبه 03 تیر 1393, 11:46 صبح
آقا اصلا وارد Catch نمي شه
گفتم كه مقدار و درست بر مي گردونه فقط چيزي كه مي نويسه اينه :
SkImageDecoder::Factory returned null
اصلا هم وارد Catch نمي شه

behi1ty
سه شنبه 03 تیر 1393, 18:21 عصر
Up برای رسیدن به راه حل

id1385
سه شنبه 03 تیر 1393, 21:45 عصر
دوست عزیز اصلاً چه کاریه که شما بخوایید عکسو تو دیتابیس ذخیره کنید ؟
من تازه وارد هستم توی جاوا، منتها کاری که من توی php می کنم اینه که اسم عکس (unique) توی دیتابیسم و مرتبط با مطلبی که هست، و این مورد رو می تونید هم در یک تیبل جدا و یا توی همون تیبل ذخیر کنید.
موقعی هم که میخواهیم عکسو بخونیم صرفاً اسم و آدرس عکسو میخونیم که این مورد می تونه توی یکی از پوشه های برنامه شما قرار بگیره، چند تا مزیت داره، اولاً دیتابیس شما الکی سنگین نمیشه، دوماً سرعت اجرای بالایی داره، سوماً راحت تر می تونید کد نویسی شو انجام بدبد و نگران این هم نیستید که یه موقع توی دیتابیس عکس ذخیره بشه یا نشه.
این کارو cms های بزرگی مثل وردپرس هم انجام میدن.
و می تونه یه ایده برای شما باشه.

موفق باشید.

behi1ty
سه شنبه 03 تیر 1393, 22:00 عصر
دوست عزیز اصلاً چه کاریه که شما بخوایید عکسو تو دیتابیس ذخیره کنید ؟
من تازه وارد هستم توی جاوا، منتها کاری که من توی php می کنم اینه که اسم عکس (unique) توی دیتابیسم و مرتبط با مطلبی که هست، و این مورد رو می تونید هم در یک تیبل جدا و یا توی همون تیبل ذخیر کنید.
موقعی هم که میخواهیم عکسو بخونیم صرفاً اسم و آدرس عکسو میخونیم که این مورد می تونه توی یکی از پوشه های برنامه شما قرار بگیره، چند تا مزیت داره، اولاً دیتابیس شما الکی سنگین نمیشه، دوماً سرعت اجرای بالایی داره، سوماً راحت تر می تونید کد نویسی شو انجام بدبد و نگران این هم نیستید که یه موقع توی دیتابیس عکس ذخیره بشه یا نشه.
این کارو cms های بزرگی مثل وردپرس هم انجام میدن.
و می تونه یه ایده برای شما باشه.

موفق باشید.

ممنونم از پاسخت اما اینی که شما گفتیم برای وب هست نه آندروید عزیزم
من SQl Server و برای کلاس کار نمی خوام که
این یعنی برنامه آندروید تحت شبکه است اون وقت شما عکس و می گیری و منم تو فایل همون برنامه نگه می دارم اون وقت بقیه چه جوری عکس و ببینند؟؟/

rubiks.kde
سه شنبه 03 تیر 1393, 23:01 عصر
آقا اصلا وارد Catch نمي شه
گفتم كه مقدار و درست بر مي گردونه فقط چيزي كه مي نويسه اينه :
SkImageDecoder::Factory returned null
اصلا هم وارد Catch نمي شه

حجم عکس ها زیاده ؟

behi1ty
سه شنبه 03 تیر 1393, 23:08 عصر
با گوشی تست نکردم با دستگاه مجازی با دوربین عکس گرفتم و می خوام نشون بدم که می ره تو دیوار

rubiks.kde
چهارشنبه 04 تیر 1393, 00:11 صبح
با گوشی تست نکردم با دستگاه مجازی با دوربین عکس گرفتم و می خوام نشون بدم که می ره تو دیوار

دقیقا مشکل همینه ، مربوط میشه و حجم عکسها.
این خطایی که داره به شما میده یک خطای مشهور برای کار با عکس هست که زمانی که از عکس های بزرگ استفاده میشه اتفاق می افته.

behi1ty
چهارشنبه 04 تیر 1393, 08:02 صبح
خوب برادر چي كار كنم؟
يعني حجم عكس و كم كنم درست مي شه؟

rubiks.kde
چهارشنبه 04 تیر 1393, 13:46 عصر
خوب برادر چي كار كنم؟
يعني حجم عكس و كم كنم درست مي شه؟

این یه احتماله اگه این کار نشه باید راه های دیگه رو تست کنید مثلا عکس رو روی حافظه ذخیره کنید و بعد از حافظه اقدام نمایش کنید.

behi1ty
چهارشنبه 04 تیر 1393, 16:15 عصر
آقا فکر نکنم از حجم عکس باشه چون یه دیتابیس SQLLIte ساختم می ریزم اونجا بعد می ریزه داخل Sql Server موقع خوندن عکس هم برعکسه
این درست کار می کنه قرار شد همین کار و کنیم اما علت این مشکل خیلی جالبه
اگر کسی از دوستان به جوابی رسید خواهشا اینجا بگه تا بمونه برای آینده
راهی که من استفاده کردم ایجاد یک Sql Lite و یک جدول مانند جدول Sql Server اول می ریزم اوجا بعد نمایش می دم
با تشکر از دوستانی که وقت گذاشتن و جواب دادند.