ارور اجرا نشدن دیتابیس
این کدها رو از قسمته 4 بحت dataBase آموزشهای استاد آقاجانی نوشتم .. ولی اجرا نمیشه
این قسمتی از ارور هستش
..01-06 04:48:09.401 10131-10131/com.example.lenovo.sample_database E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lenovo.sample_database, PID: 10131
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lenovo.sample_database/project.activity.SplashActivity}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
MyDatabaseHelper
package project.Helper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import project.main.G;
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "sample.sqlite";
public static final int DB_VERSION = 2;
public MyDatabaseHelper(Context context) {
super(context, G.DB_DIR + "/" + DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
createPersonTable(db);
createContactTable(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion == 1) {
createPersonTable(db);
}
if (newVersion == 2) {
createContactTable(db);
}
}
private void createPersonTable(SQLiteDatabase db) {
String query = "CREATE TABLE 'person' (" +
"'personID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ," +
" 'firstname' TEXT," +
" 'lastname' TEXT, " +
"'gender' INTEGER," +
" 'email' TEXT UNIQUE ," +
" 'imageurl' TEXT," +
" 'creationTime' INTEGER" +
")";
db.execSQL(query);
}
private void createContactTable(SQLiteDatabase db) {
String query = "CREATE TABLE 'contact' (" +
"'contactID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ," +
" 'personId' TEXT," +
" 'lable' TEXT, " +
" 'phone' TEXT" +
")";
db.execSQL(query);
}
}
کلاس G
package project.main;
import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import project.Helper.MyDatabaseHelper;
public class G extends Application {
public static G app;
public static SQLiteDatabase database;
public static boolean isDataBaseCreate;
public static final String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String BRAND_DIR = SDCARD + "/uncox-learn1";
public static final String APP_DIR = BRAND_DIR + "/sample_database1";
public static final String DB_DIR = APP_DIR + "/db1";
@Override
public void onCreate() {
super.onCreate();
app = this;
Log.i("LOG", "Application On Creat");
}
public void createAppDirectories() {
File db_dir = new File(DB_DIR);
if (!db_dir.exists()) {
boolean wasCreated = db_dir.mkdirs();
}
createOROpenDatabace();
}
public void createOROpenDatabace() {
if (database != null) {
return;
}
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
database = dbHelper.getWritableDatabase();
isDataBaseCreate = true;
}
}
کلاس SplashActivity.java
package project.activity;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import com.example.lenovo.sample_database.R;
import project.Helper.RequestHelper;
import project.main.G;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
requestForWriteSDCardPermission();
OpenMainActivity();
}
private void OpenMainActivity() {
Intent intent = new Intent(this, MainActivity.class);
this.startActivity(intent);
this.finish();
}
////----WRITE_EXTERNAL_STORAGE----////
private void requestForWriteSDCardPermission() {
RequestHelper request = new RequestHelper(this);
RequestHelper.OnGrantedListener onGrantedListener = new RequestHelper.OnGrantedListener() {
@Override
public void onGranted() {
G.app.createAppDirectories();
OpenMainActivity();
}
};
RequestHelper.OnAlreadyGrantedListener onAlreadyGrantedListener = new RequestHelper.OnAlreadyGrantedListener() {
@Override
public void onAlreadyGranted() {
G.app.createOROpenDatabace();
OpenMainActivity();
}
};
RequestHelper.OnDeniedListener onDeniedListener = new RequestHelper.OnDeniedListener() {
@Override
public void onDenied() {
new AlertDialog.Builder(SplashActivity.this)
.setTitle("Permission Requerd")
.setMessage("Writing to SDCARD is requred for app")
.setPositiveButton("Ask me again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
requestForWriteSDCardPermission();
}
})
.create()
.show();
}
};
request.request(Manifest.permission.WRITE_EXTERNAL_STORAGE, onGrantedListener, onDeniedListener, onAlreadyGrantedListener);
}
///--- answer ----////
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
RequestHelper.onRequestPermissionResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
RequestHelper
package project.Helper;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import java.util.ArrayList;
import java.util.List;
public class RequestHelper {
private static int lastRecuestCode = 100;
private static boolean isFirstRequest = true;
private int requestCode;
private Activity activity;
private OnDeniedListener onDeniedListener;
private OnGrantedListener onGrantedListener;
private OnAlreadyGrantedListener onAlreadyGrantedListener;
private String permission;
private boolean isFinished;
private static List<RequestHelper> requests = new ArrayList<>();
public interface OnAlreadyGrantedListener {
void onAlreadyGranted();
}
public interface OnGrantedListener {
void onGranted();
}
public interface OnDeniedListener {
void onDenied();
}
public RequestHelper(Activity activity) {
this.activity = activity;
}
public void request(String permission, OnGrantedListener onGrantedListener, OnDeniedListener onDeniedListener , OnAlreadyGrantedListener onAlreadyGrantedListener) {
requests.add(this);
lastRecuestCode++;
requestCode = lastRecuestCode;
this.permission = permission;
this.onDeniedListener = onDeniedListener;
this.onGrantedListener = onGrantedListener;
this.onAlreadyGrantedListener = onAlreadyGrantedListener;
if (isFirstRequest) {
nextRequest();
isFirstRequest = false;
}
}
public static void onRequestPermissionResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (RequestHelper request : requests) {
if (requestCode == request.requestCode) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (request.onGrantedListener != null) {
request.onGrantedListener.onGranted();
}
} else {
if (request.onDeniedListener != null) {
request.onDeniedListener.onDenied();
}
}
request.isFinished = true;
nextRequest();
}
}
}
public static void nextRequest() {
for (RequestHelper request : requests) {
if (!request.isFinished) {
int Granted = ActivityCompat.checkSelfPermission(request.activity, request.permission);
if (Granted == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(request.activity, new String[]{request.permission}, request.requestCode);
}else{
if (request.onAlreadyGrantedListener != null){
request.onAlreadyGrantedListener.onAlreadyGranted();
}
}
return;
}
isFirstRequest = true;
}
}
}

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