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

ارور اجرا نشدن دیتابیس

mosi  8 سال پیش  8 سال پیش
0 0

 این کدها رو از قسمته 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 آموزشهای استاد آقاجانی نوشتم .. ولی اجرا نمیشه

 

 برای این سوال پاسخی وجود ندارد.

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