آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تابع oncreate در sqliteDatabaseHelper

amard  9 سال پیش  9 سال پیش
0 0

سلام.من در کلاس دیتابیس م به چهار تابع احتیاج داشتم که فیلد ها و نوع فیلد ها یکسان بوده ولی اسم این تیبل ها با هم فرق دارن. دیدم که بهتره یک کد برای ایجاد table در تابع oncreate بنویسم و فیلد نام table  رو متغییر بزارم و هر سری که از دیتابیس یک شی ایجاد میکنم نام جدولی که باهاش کار دارم رو مقدار دهی کنم.حالا که میخوام دومین شی(یعنی ایجاد دومین تیبل) رو ایجاد کنم تیبل رو نمیشناسه در حالی که همین کد برای اولین جدول کار میکرد.میخوام بدونم که تابع oncreate فقط یکبار در برنامه اجرا میشه ؟ این کد منه.

 
private static class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT , " +
KEY_AREA + " TEXT NOT NULL , " +
KEY_DOMAIN + " INTEGER NOT NULL , " +
KEY_BLOCK + " TEXT NOT NULL , " +
KEY_MELK + " TEXT NOT NULL , " +
KEY_BUILD + " TEXT NOT NULL , " +
KEY_APARTEMAN + " TEXT NOT NULL , " +
KEY_PID + " INTEGER NOT NULL , " +
KEY_GUILD + " TEXT NOT NULL);"
);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
0 0
سلام،بله متد oncreate فقط یه بار اجرا میشه.پس شما عملا فقط یه جدول رو می تونید بسازید،با استفاده از یه آبجکت از SqliteDatabase می تونید دستورات Sql رو هر موقع که بخواین اجرا کنید.یعنی باید یا همه جدولارو باهم توی متد oncreate بسازید یا اینکه یه متد برای ساخت جدول بنویسید و یا اینکه دستور Sql ساخت جدول رو هر موقع که نیاز به ساخت جدول جدید بود به شکل مقابل بکار ببرین (" ...db.execSQL("CREATE TABLE .که db همون آبجکتی از کلاس SqliteDatabase هست. (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
amard  9 سال پیش
0 0

من چون مشکلم حل شد گفتم راه حل ش رو اینجا قرار بدم شاید به درد دوستان قرار بدم.مشکلم این بود که یه بار جدولی رو توی تابع oncreate  ایجاد کردم و حالا میخواستم کد ایجاد چند تابع دیگه رو هم توی oncreate  قرار بدم.ولی oncreate فقط یه بار اجرا میشه.برای این کار باید ورژن دیتابیس رو تغییر بدیم.همین.


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .