رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

به مناسبت عید سعید فطر قصد دارم آموزش دیتا بیس که از مباحث مهم در اندروید محسوب میشه رو به صورت ساده در خدمت دوستان قرار بدم

البته این کار توسط دوست عزیزمون آقای سیفی قبلا انجام شده

ولی در اینجا یه روش دیگه رو مطرح می کنم

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

اگه عمری بود درمورد اون هم توضیحاتی مینویسم بعدا

در اندروید دیتا بیس در هر برنامه ایجاد بشه داخل فولدر زیر ذخیره میشه :

[align=left]database//data/data[/align]

[align=right]خوب آموزش رو شروع میکنیم[/align]

[align=right]جدول ما در این مثال شامل 2 فیلد میشه[/align]

[align=right]id : این فیلد رو تعریف کردیم و جلوتر اشاره می کنیم که به صورت اتوملایک بشماره واسه دونستن تعداد رکورد های جدول[/align]

[align=right]title : این فیلد جهت ذخیره عنوان در نظر گرفته شده[/align]

[align=right] اول یه کلاس به نام DBclass میسازیم[/align]

[align=left]

public class DBclass extends SQLiteopenhelper {}

 [/align]

نام دیتابیس رو به این صورت تعریف میکنیم (DATABASE_project1)

[align=left]

public static final String DATABASE = "DATABASE_project1.db";

[/align]

[align=right]نام جدول رو نیز به این صورت تعریف می کنیم (tbl_project1)

[align=left]

public static final String tbl_project1 = "tbl_project1";

[/align]

در این قسمت فیلدهامون رو تعریف کردیم ،تعداد و نوع فیلدها بر اساس نیاز ما تعیین میشه

public static String id = "ID";public static String title = "title";

یک تابع درون کلاس که سازنده محسوب میشه رو بدین صورت تعریف میکنیم[/align]

[align=right]دوستان ،سازنده به این صورت عمل میکنه که اگه بانک وجود نداشت ،اونو میسازه ،اگه وجود داشت ورژن و چک میکنه،اگه ورژن درست بود که هیچ،اگه نه بانک و دوباره ایجاد میکنه بر اساس ورژن جدید:dodgy:[/align]

[align=right]امیدوارم متوجه شده باشید

public DBclass(Context context) {super(context,DATBASE,null,1);}

[/align]

این تابع جزء توابعی هستش که با اجرای کلاس حتما اجرا میشه(گه جدول از قبل وجود داشت که هیچ، در غیر اینصورت اون و ایجاد میکنه) و جدول مورد نظر رو با فیلدهای بالا میسازه

@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + tbl_note + " (" + id+ " INTEGER PRIMARY KEY AUTOINCREMENT  ," + title + " TEXT);");}

این تابع نیز مانند تابع قبلی هستش جهت بازسازی جدول(اگه ورژن دیتا بیس فرق کنه اونو از اول میسازه و اطلاعات قبلی از بین میرن)

@Overridepublic void onUpgrade(SQLiteDatabase db ,int oldVersion ,int newVersion){db.execSQL("DROP TABLE IF EXISTS "+tbl_project1);onCreate(db);}

تابع زیر با فراخوانی اجرا می شود

این تابع یک رکورد جدول را حذف می کند ،حذف رکورد به این صورت گه محتوای id,title به صورت پارامتر به این تابع ارسال و این تابع رکورد مذکور را حذف می نماید.

public void deleteNote(String ID, String title) {		SQLiteDatabase db = this.getWritableDatabase();	db.delete(tbl_note, "ID="+ID+ " and title='"+title+"'", null);}

تابع زیر با فراخوانی اجرا می شود

کار اصلی این تابع بروز رسانی بانک با مقادیر دریافت شده هست.این مقادیر به صورت پارامتر دریافت میشه و با این تابع مقادیر جدید جایگزین میشن

public void updateRowtable(String id,String title){SQLiteDatabase db = this.getWritableDatabase();ContentValues args = new ContentValues();args.put("id",id);args.put("title",title);db.update(tbl_project1,args,"ID="+id+"and title='"+title+"'",null);}

این تابع عملیات درج رو انجام میده به این صورت که ما تابع رو فراخوانی میکنیم و مقادیر فیلدی که میخوایم درج کنیم رو به صورت پارامتر ارسال میکنیم

public void Addrow(String title){SQLiteDatabase db = this.getWritableDatabase();ContentValues args = new ContentValues();args.put("title",title);db.insert(tbl_project1,null,args);}}

مثلا میخوایم یه رکورد در دیتا بیس درج کنیم

تو یه کلاس دیگه یه متغیر از نوع این کلاس ذخیره می کنیم

DBclass db_note;  

با خط زیر به بانک اطلاعاتی وصل میشیم

db_note = new DATABASE_project1(getApplicationContext());

دستور زیر باعث اجرای تابع درج در کلاس دیتا بیس میشه و یک رکورد به جدول اضافه میشه

db_note.Addrow(txt_input.gettext().toString());

فیلد اول رو به صورت اتوماتیک id در نظر میگیره

فیلد دوم رو محتوای یه edittext در نظر گرفتیم که اسم اون txt_input  هستش

البته چگونگی رویداد این خط فرق میکنه و شما این خط رو باید در دکمه اضافه کردن درج کنید

بقیه عملیات نیز به این صورت کافیه تابع اونو با پارامتر صدا کنیم

باید جهت زیبایی برنامه از ابزارهای متنوعی استفاده کنید مانند لیست ویو و کانتکس منو و ... تا بتونید از بانک به صورت بهینه تر استفاده کنید

در آینده استفاده از بانک با لیست و آپشن های بیشتری رو تو سایت میزارم

موفق باشید.

Database.pdf

Database.pdf

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 4 هفته بعد...

عالـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــی بـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــود

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...
لینک ارسال
به اشتراک گذاری در سایت های دیگر

اینو امتحان کردم ولی خطا میداد

خطای Null از لیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 ماه بعد...

خب میتوانید آدرس فایل رو ذخیره کنید و سپس بعد از لود دیتابیس و فیلد مشخص شده. مقدار مورد نظر را بنا به کاربرد خواسته شده اجرا کنید.

مثلا شما یک فایل ویدئویی مسیر ان را ذخیره کرده اید بدین صورت

[shcode=xml]sdcard/video/football.mp4[/shcode]

حالا شما براحتی میتوانید ادرس را به یک پلیر set کنید و آن را Play کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 7 ماه بعد...

شما درون فيلد هاي ديتابيس كافيه اسم تصوير مورد نظر رو بنويسيد و بعد ازش با فراخواني اسمش تصوير رو نشون بدين

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما درون فيلد هاي ديتابيس كافيه اسم تصوير مورد نظر رو بنويسيد و بعد ازش با فراخواني اسمش تصوير رو نشون بدين

دوسته عزیز خودم این رو میدونم

اون کدی که باید بزاریم تا عکس رو فراخوانی کنه چیه ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله

كافيه براي نمايش تصاوير

ImageView img = (ImageView) view.findViewById(R.id.img);

بعد با اين كد

int imageResource = c.getResources().getIdentifier(name.getPhoto(),			"drawable", c.getPackageName());	img.setImageResource(imageResource);
Context c;

بايد اين ستون از ديتابيس رو در كد ها معرفي كنيد در كل

فقط همين كد نيست

اين فقط كد رو ميخونه و به دنبال اسم تصوير درون drawable ميگرده اگه بود

ميريزه توي img

nameاينجا pos  هست""""""
getPhotoاسم فيلد تصاوير ميباشد
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله

كافيه براي نمايش تصاوير

ImageView img = (ImageView) view.findViewById(R.id.img);

بعد با اين كد

int imageResource = c.getResources().getIdentifier(name.getPhoto(),			"drawable", c.getPackageName());	img.setImageResource(imageResource);
Context c;

بايد اين ستون از ديتابيس رو در كد ها معرفي كنيد در كل

فقط همين كد نيست

اين فقط كد رو ميخونه و به دنبال اسم تصوير درون drawable ميگرده اگه بود

ميريزه توي img

nameاينجا pos  هست""""""
getPhotoاسم فيلد تصاوير ميباشد

دوسته عزیز این کد ها روی نرم افزار

بیسیک4اندروید

   

هم کار میکنه

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 5 ماه بعد...

سلام 

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

سپاس از کمکتون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...