بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
خطای SQLiteException
سلام دوستان
برنامه من طبق گزارش های که دریافت میکنم از هر 1000 نصب تقربا 50 نصب با خطای SQLiteException مواجعه میشود
کدهای مربوط به کلاس G
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_DATABASEONVAN = DIR_SDCARD + "/Android/data/com.kohanweb.bestnovels/";
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
new File(G.DIR_DATABASEONVAN + "/data").delete();
File file = new File(DIR_DATABASEONVAN);
file.mkdirs();
File data = new File(DIR_DATABASEONVAN + "/data");
boolean isExist = data.exists();
if (isExist == false) {
AssetManager assetManager = context.getAssets();
InputStream inputStream;
try {
inputStream = assetManager.open("data");
HelperIO.copyFile(inputStream, DIR_DATABASEONVAN + "data");
}
catch (IOException e) {
e.printStackTrace();
}
}
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASEONVAN + "/data", null);
}
}
کدهای مربوط به کوئری از دیتابیس که خطل میده
Cursor cursor = G.database.rawQuery("SELECT * FROM mozoha ", null);
G.onvans.clear(); while (cursor.moveToNext()) { StructOnvans onvans = new StructOnvans(); onvans.id = cursor.getInt(cursor.getColumnIndex("id")); onvans.txt = cursor.getString(cursor.getColumnIndex("onvan")); onvans.tedad = cursor.getInt(cursor.getColumnIndex("tedad")); G.onvans.add(onvans); } cursor.close(); adapter = new ListBookMozo(G.onvans);
ltvOnvan.setAdapter(adapter); adapter.notifyDataSetChanged();
و لاگ خطا
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kohanweb.bestnovels/com.kohanweb.bestnovels.ListMozo}: android.database.sqlite.SQLiteException: no such table: mozoha (code 1): , while compiling: SELECT * FROM mozoha
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2372)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)
at android.app.ActivityThread.access$600(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5433)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: no such table: mozoha (code 1): , while compiling: SELECT * FROM mozoha
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:888)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:499)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
at com.kohanweb.bestnovels.ListMozo.onCreate(ListMozo.java:90)
at android.app.Activity.performCreate(Activity.java:5179)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2336)
... 11 more
ممنون میشم راهنمایی بفرمایید .
+1
0
احتمال داره کپی شدن دیتابیس روی کارت داخلی ممکن نباشه و لازمه که پرمیژن کارت حافظه خارجی هم اضافه کنید ، همچنین دسترسی برای ویرایش ، و همچنین اینکه ممکنه این 50% روی اندورید 6 باشه که پرمیژن ها باید توسط کاربر تایید بشه و اگر اونهارو تایید نکنه ! (10 سال پیش)
+1
0
درسته به خاطر اندروید 6 هست. (10 سال پیش)
0
0
ممنون از پاسخ دوستان اما بخاطر اندروید 6 نیست چون روی اندروید پایین تر از 6 کرش اتفاق افتاده و باعث متوقف شدن برنامه میشه. (10 سال پیش)
+2
0
چیزی که مشخصه rawQuery چیزی رو برنمیگردونه!! همین باعث میشه در خط بعدی دچار مشکل بشید ... حالا چرا برنمیگردونه رو باید پیدا کنید. (10 سال پیش)
+1
0
مشکل مربوط به عدم دسترسی یا عدم وجود Table مورد نظر هست . احتمالا خطایی در ساخته شده دیتابیس و یا ایجاد جدول وجود داره و یا ممکن هست کپی کردن فایل دیتابیس ناقص انجام بشه .البته آدرس دهی که انجام دادید غلط هست و به مسیر اشتباهی اشاره داره ، که مطمئنا از همین هست . (10 سال پیش)
0
0
جناب کاشی زاده آدرس دهی به چه صورت باید باشه؟ (10 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
کاشی زاده
10 سال پیش
+1
0
جاهایی که (*) گذاشتم خطا وجود داره .
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_DATABASEONVAN = DIR_SDCARD + "/Android/data/com.kohanweb.bestnovels/";
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
new File(G.DIR_DATABASEONVAN + "/data").delete(); // /Android/data/com.kohanweb.bestnovels//data (* //data)
File file = new File(DIR_DATABASEONVAN);
file.mkdirs(); // /Android/data/com.kohanweb.bestnovels/ (Directory Created)
File data = new File(DIR_DATABASEONVAN + "/data"); // /Android/data/com.kohanweb.bestnovels//data (* //data)
boolean isExist = data.exists();
if (isExist == false) {
AssetManager assetManager = context.getAssets();
InputStream inputStream;
try {
inputStream = assetManager.open("data");
HelperIO.copyFile(inputStream, DIR_DATABASEONVAN + "data");
}
catch (IOException e) {
e.printStackTrace();
}
}
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASEONVAN + "/data", null); // /Android/data/com.kohanweb.bestnovels//data (* //data)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .