منظور شما این هست که " / " قبل از data باید حذف شود.؟
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
خطای SQLiteException
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
سلام دوستان
برنامه من طبق گزارش های که دریافت میکنم از هر 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
جاهایی که (*) گذاشتم خطا وجود داره .
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)
نظرات
بله ، آدرس شما / اضافی داره که باید حذف بشه . بعد از اینکه تغییرات رو اعمال کردید چک کنید آیا فایل ساخته میشه یا نه .
فایل که ساخته میشه و مشکلی در دستگاه خودم نداره .همان طور که در ابتدای سوال عرض کردم در هر 1000 دستگاه تقریبا 50 دستگاه با این خطا مواجع میشن که شاید مشکل از دستگاه کاربران باشه.ممنون از پاسختون
آدرس رو اصلاح کنید شاید حالت استثنایی باشه و خود سیستم هندل کنه تو شرایطی اما تو برخی شرایط این امکان وجود نداشته باشه .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات