مشکل در بانک اطلاعات
سلام دوستان . من طبق آموزشهای استاد پیش رفتم و میخوام در نرم افزارم یک بانک اطلاعات ایجاد کنم . مشکلی ک دارم اینه تا قبل از دستور insert برنامه کرش نمیکنه ولی وقتی ک دستور insert رو مینویسم برنامه کرش میکنه . مثلا طبق آموزش استاد میخوام این سه فیلد پر بشه , اما وقتی اینو مینویسم تو کدم برنامه کرش میکنه!! همه چیز هم مثل کد استاد . من از اندروید استادیو و اندروید 4 استفاده میکنم . اگ ممکنه بهم کمک کنید مشکلم حل بشه !!!
database.execSQL("INSERT INTO person (person_name,person_family,person_age) VALUES ('Ali', 'rahimi ',20);");
این هم از مابقیه کدهای نوشته شده در کلاس G . من permission رو هم ک برای write کردن بودو نوشتم . ولی نمیدونم مشکل کجاست . همچنین نمیدونم چرا به mkdirs وارنینگ میده !! کرش برنامه بعد از نوشتن دستور insert مشکل اساسیمه :(
public class G extends Application {
public static Context context ;
public static SQLiteDatabase database ;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD+"/database-test/";
@Override
public void onCreate() {
super.onCreate();
context = this.getApplicationContext() ;
new File(DIR_DATABASE).mkdirs();
database= SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database1.sqlite",null );
database.execSQL("CREATE TABLE IF NOT EXISTS person " +
" (person_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE" +
" , person_name TEXT, " +
"person_family TEXT," +
" person_age INTEGER);");
database.execSQL("INSERT INTO person (person_name,person_family,person_age) VALUES ('Ali', 'rahimi ',20)");
}
}
علت کرش میگه ک شما 4 تافیلد داری درحالیکه میخوای 3 تا فیلدو پر کنی . اما توی آموزش استاد چون اولین ستون primary key و Auto بود ، خودش ب طور پیش فرض اعدادو وارد میکنه : این هم متن کرش :
java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplic
ation: android.database.sqlite.SQLiteException: table person has 4 columns but 3 values were supplied
(code 1): , while compiling: INSERT INTO person( person_name,person_family,person_age) VALUES ('Ali','Rahimi',20);
این خطا اعلام کرده که شما 4 رکورد دارید اما با 3 رکورد دارید مقداردهی میکنید ، شما باید به شکل زیر insert کنید
database.execSQL("INSERT INTO person (person_id,person_name,person_family,person_age) VALUES (0,'Ali', 'rahimi ',20);");
مقدار person_id درسته که خود به خود تولید میشه اما شما باید موقع Insert مقدار 0 رو حتما بهش بدید
موفق باشید
من هم همین مشکلو دارم
کلاً فایل دیتا بیس ساخته نمیشه و از خط زیر خطا میگیره:
database= SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database1.sqlite",null );
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .