بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در بانک اطلاعات

مدیریت گفتگو
Atieh 10 سال پیش
آخرین تغییر: 9 سال پیش

سلام دوستان  . من طبق آموزشهای استاد پیش رفتم و میخوام در نرم افزارم یک بانک اطلاعات ایجاد کنم . مشکلی ک دارم اینه تا قبل از دستور insert برنامه کرش نمیکنه ولی وقتی ک دستور insert رو مینویسم برنامه کرش میکنه . مثلا طبق آموزش استاد میخوام این سه فیلد پر بشه , اما وقتی اینو مینویسم تو کدم برنامه کرش میکنه!! همه چیز هم مثل کد استاد . من از اندروید استادیو و اندروید 4 استفاده میکنم . اگ ممکنه بهم کمک کنید مشکلم حل بشه !!!

 database.execSQL("INSERT INTO person (person_name,person_family,person_age) VALUES ('Ali', 'rahimi ',20);"); 

 

نظرات

Atieh 10 سال پیش
خانم رییسی ممنونم از پاسخ دهی و وقتی ک گذاشتین . اما فکر نمیکنم مشکل از سمیکالم باشه . این باشه و نباشه یکیه ولی خب من برش میدارم

پاسخ‌ها 4

مشاهده پاسخ صحیح
Atieh 10 سال پیش

این هم از مابقیه کدهای نوشته شده در کلاس 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)");
}

}
 

نظرات

Shadow 10 سال پیش
فک کنم شما باید اول اتصالتون به دیتابیس برقرار بشه
Atieh 10 سال پیش
خب من طبق آموزش استاد پیش رفتم . یعنی از SQLite manager استفاده کردم . برام جدولو میسازه اما وقتی میخوام insert کنم کرش میکنه !!
Shadow 10 سال پیش
خطای که هنگام کرش کردن میده رو لطفا بنویسید؟!
Atieh 10 سال پیش

علت کرش میگه ک شما 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);
 

نظرات

زهرا رئیسی 10 سال پیش
کداتون کاملا درسته یه بار project clean کنید اکلیپس رو ری استارت کنید ببینید درست نمیشه چون هکه چیز ظاهرا درسته
Atieh 10 سال پیش
من از اندروید استادیو و نسخه ۴ اندروید استفاده میکنم . ولی چشم این کارم میکنم. خیلی وقتمو گرفت این دستور ب این مهمی....
هادی بی غم 10 سال پیش

 پاسخ صحیح

 این خطا اعلام کرده که شما 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 رو حتما بهش بدید

موفق باشید

 

نظرات

Atieh 10 سال پیش
ممنونم از ووقتی ک گذاشتید . سپاس فراوان
آریا 10 سال پیش
اطفا اگه مشکلتون حل شده تو تیتر سئوال عبارت (حل شد) اضافه کنید
h.k.m 9 سال پیش

من هم همین مشکلو دارم

کلاً فایل دیتا بیس ساخته نمیشه و از خط زیر خطا میگیره:

database= SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database1.sqlite",null );

نظرات

jbRhmNqb 9 سال پیش
پرمیشن WRITE_EXTERNAL_STORAGE رو گذاشتین؟!

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