morteza ghalandary

دیتابیس در اندروید

17 ارسال در این موضوع قرار دارد

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

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

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

اندروید از بانک اطلاعاتی 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

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


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

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

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


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

یه سوال

چطوری میشه از دیتابیس اطلاعاتو خوند و توی لیست ویو نشون داد؟

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


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

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


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

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

خطای Null از لیست

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


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

با سلام....

می خواستم بپرسم که چطور میشه از طریق دیتابیس به یک فایل دسترسی پیدا کرد و اطلاعات توی فایل رو نمایش داد؟

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


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

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

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

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

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

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


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

چطوری میشه تو دیتایس از عکس استفاده کرد ؟

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


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

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

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


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

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

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

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

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


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

بله

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

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اندروید

   

هم کار میکنه

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


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

نه دوست عزيز اين ها كد هاي جاوا هست

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


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

نه دوست عزيز اين ها كد هاي جاوا هست

شما کار با دیتابیس در بیسیک4اندروید رو بلدین ؟

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


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

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

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


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

سلام 

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

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

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


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

قبلا دوستان پرسیدن تو سایت سرچ کنین

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری