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

مشکل با برنامه Database

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

سلام دوستان ، در برنامه ی Database ( اولاش ) من طبق دستورات پیش میرم  ( در اندروید استودیو ) ولی با خطای زیر مواجه میشم :                                                                                                  Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

 کسی ایده ای داره ؟ و البته در AndroidManifest.xml هم این دو مورد رو اضافه کردم : =>

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-sdk android:minSdkVersion="8"/>
// Codes of G class :
package com.example.n5110.database;

import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import java.io.File;

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.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null);
}
}
 برای این سوال 4 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
FSR  9 سال پیش
+1 0

سلام 

فک کنم مشکل از / باشه

به جای این

public static final String DIR_DATABASE = DIR_SDCARD + "/database-test/";

از این استفاده کن

public static final String DIR_DATABASE = DIR_SDCARD + "/database-test";
0 0
سپاسگزارم امتحان کردم ولی باز همون ارور رو میده . (9 سال پیش)
+1 0
از کدوم خط ایراد میگیره ؟ کل کلاس G رو بزار اینجا ببینم مشکل از کجاست (9 سال پیش)
0 0
کد های کلاس G رو در بالا گذاشتم و از این خط : => ;(database.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null (9 سال پیش)
پاسخ به سوال 
Reza  9 سال پیش
+2 0

سلام

dataBase  شما مقدار نداره ، باید dataBase رو به این صورت مقدار دهی کنید :

به جای این خط :

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

بنویسید :

 
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null);
0 0
امتحان کردم ، ولی باز همون ارور رو میده . (9 سال پیش)
0 0
دوستان ، همه کارهایی رو که گفتین رو امتحان کردم ولی مشکلم حل نشد . (9 سال پیش)
+2 0
اگه داری از روی اموزش های اکلیپس پیش میری من دقیقا یادمه استاد خودش هم اشتباه کرد مثل شما بعدش بعد چند دقیقه اشتباهش رو تصیح کرد و تبدیلش کرد به همین جوابی که دوستمون دادن (9 سال پیش)
0 0
تغییرش می دم همون جور که گفتن ولی باز همون ارور رو میده !! (9 سال پیش)
+1 0
یه اسکرین شات کامل از log cat بذار ببینم مشکل از کجاست (9 سال پیش)
پاسخ به سوال 
MarAnd  9 سال پیش
0 0

این مربوط به logcat هست : 

 01-03 20:25:17.491 10122-10122/com.example.n5110.database D/AndroidRuntime: Shutting down VM
01-03 20:25:17.491 10122-10122/com.example.n5110.database E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.n5110.database, PID: 10122
java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplication: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5364)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:711)
at com.example.n5110.database.G.onCreate(G.java:21)
at com.android.tools.fd.runtime.BootstrapApplication.onCreate(BootstrapApplication.java:369)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5361)
at android.app.ActivityThread.-wrap2(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6077) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
+1 0
با اینا هم نمیشه چیزی رو تشخیص داد میخواید پروژه رو اپلود کنید تا بهتر بشه جواب داد (9 سال پیش)
0 0
اگه ران بشه برنامه ، باید تو حافظه ی داخلی گوشیم یه فایل ایجاد بشه دیگه ؟ کجا باید دقیقا برم ؟ (9 سال پیش)
پاسخ به سوال 
MarAnd  9 سال پیش
0 0

 پاسخ صحیح

علاوه بر اینکه باید تغییری که Reza@ گفتن مشکل اصلی ارور از این جا بود که من روی امولیتوری که ورژنش 6 به بالا بود داشتم اجرا می کردم و به خاطر مبحث   runTimePermision ها که از اندروید 6 به بالا اضافه شده و من اطلاعی ازش نداشتم برنامه Crash می کرد و وقتی که روی ورژن 5.1 امتحان کردم به درستی ران شد. 


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