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

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

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

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

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

 
0 0
بقیه کد هارم بذار (9 سال پیش)
+3 0
آخر دستور sql سیمی کالن رو بردارین (9 سال پیش)
0 0
خانم رییسی ممنونم از پاسخ دهی و وقتی ک گذاشتین . اما فکر نمیکنم مشکل از سمیکالم باشه . این باشه و نباشه یکیه ولی خب من برش میدارم (9 سال پیش)
0 0
اگه مشکلتون این نیست log رو بزارین (9 سال پیش)
 برای این سوال 4 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Atieh  9 سال پیش
0 0

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

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

علت کرش میگه ک شما 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);
 
0 0
کداتون کاملا درسته یه بار project clean کنید اکلیپس رو ری استارت کنید ببینید درست نمیشه چون هکه چیز ظاهرا درسته (9 سال پیش)
0 0
من از اندروید استادیو و نسخه ۴ اندروید استفاده میکنم . ولی چشم این کارم میکنم. خیلی وقتمو گرفت این دستور ب این مهمی.... (9 سال پیش)
پاسخ به سوال 
هادی بی غم  9 سال پیش
0 0

 پاسخ صحیح

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

موفق باشید

 

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

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

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

database= SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database1.sqlite",null );
0 0
پرمیشن WRITE_EXTERNAL_STORAGE رو گذاشتین؟! (9 سال پیش)

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