hamidreza.kh

مشکل در آپدیت کردن سطر از دیتابیس

1 ارسال در این موضوع قرار دارد

خسته نباشید دوستان

من میخوام یه مقداری رو بگیرم که داخل تیبل settings از دیتابیسم بصورت key ,value ذخیرش کردم key ش sound هست که از نوع ورکرکتر هست و میخوام اگه مقدارش 1 هست یه عکسی رو نشون بده اگرم مقدارش 0 هست یه عکس دیگه رو(همزمان اگه مقدار 1 بود صدا پخش بشه اگرم 0 بود پخش نشه)

خلاصه مطلب اما به یه اروری خوردم حالا میخواستم ببینم ایراد از کجاست؟!

این کلاس دیتابیس منیجرم

public class DatabaseManager extends SQLiteOpenHelper {

    private Context context;

    private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/";
    private static String DB_NAME = "words_db.db";

    public static String DB_TABLE_WORDS ="words";
    public static String BD_TABLE_PLAY="play";
    public static String DB_TABLE_SETTINGS="settings";

    private static int DB_VERSION = 2;

    private SQLiteDatabase dbase;

    public DatabaseManager(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    public void createDatabase(){

        boolean dbExist = checkDatabase();

        if (dbExist) {
            Log.d("TAG", "Database already Exist");
        } else {
            this.getReadableDatabase();
        }

        try {
            copyDataBase();
        } catch (IOException e) {

            throw new Error("Error copying database");
        }

    }

    private  boolean checkDatabase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB=SQLiteDatabase.openDatabase(myPath , null, SQLiteDatabase.OPEN_READWRITE);

        } catch (SQLiteException e) {

        }

        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }

    private void copyDataBase() throws IOException {

        InputStream myInput = context.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
        myOutput.flush();
        myOutput.close();
        myInput.close();
    }

    public void openDataBase() throws SQLiteException {

        String myPath = DB_PATH + DB_NAME;
        dbase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    }


    public Cursor queryData(String query) {
        return dbase.rawQuery(query, null);
    }

    @Override
    public synchronized void close() {
        if (dbase != null)
            dbase.close();
        super.close();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
       ///DO NOTHING

    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
    ///DO NOTHING

    }


   public int getSoundState(){

       openDataBase();
        Cursor cursor=queryData( " SELECT * FROM " + DB_TABLE_SETTINGS +  " WHERE key='sound' ");
        cursor.moveToFirst();
        return Integer.parseInt(cursor.getString(2));

    }

    public boolean setSoundState(int state){

        openDataBase();
        ContentValues contentValues=new ContentValues();
        contentValues.put("sound",state);

        long result=dbase.update(DB_TABLE_SETTINGS,contentValues," key = ? " , new String[] {"sound"} );
        if (result < 1){
            return true;
        }else {
            return false;
        }
    }

}

همونطوری که میبینید متد های گتر و ستر رو برای وضعیت صدام مشخص کردم...

اینم کلاسی که میخوام اطلاعاتو ویرایش کنم...

public class WordActivity extends AppCompatActivity {

    private MediaPlayer mediaPlayer;
     DatabaseManager db;
    private SQLiteDatabase sqLiteDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_word);

        Intent intent = getIntent();

        final int id = intent.getIntExtra("id", 0);
        String word = intent.getStringExtra("word");
        String imageWord = intent.getStringExtra("image");
        String soundWord = intent.getStringExtra("sound");


        int resID = getResources().getIdentifier(imageWord, "mipmap", getPackageName());

        int resImage = this.getResources().getIdentifier(soundWord, "raw", this.getPackageName());

        ImageView imageBox = (ImageView) findViewById(R.id.image_word_activity);

        final ImageView imageSoundState = (ImageView) findViewById(R.id.sound_state);

        if (db.getSoundState()==1){
            Picasso.with(this).load(R.drawable.sound_play).into(imageSoundState);
        }else {
            Picasso.with(this).load(R.drawable.sound_stop).into(imageSoundState);
        }



      imageSoundState.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (db.getSoundState()==1){

                    if (db.setSoundState(0)){
                        Picasso.with(WordActivity.this).load(R.drawable.sound_stop).into(imageSoundState);

                    }

                }else {
                    if (db.setSoundState(1)){
                        Picasso.with(WordActivity.this).load(R.drawable.sound_play).into(imageSoundState);


                    }

                }

            }
        });

        TextView textBox = (TextView) findViewById(R.id.text_word_activity);

        Picasso.with(this).load(resID).into(imageBox);

        mediaPlayer = MediaPlayer.create(this, resImage);
        mediaPlayer.start();

        textBox.setText(word);

    }

    @Override
    protected void onPause() {
        super.onPause();
        mediaPlayer.release();
    }

 

 

اینم ارور ها 

01-09 17:59:26.831 27683-27683/? I/art: Not late-enabling -Xcheck:jni (already on)
01-09 17:59:26.831 27683-27683/? W/art: Unexpected CPU variant for X86 using defaults: x86
01-09 17:59:26.883 27683-27683/com.wordstutorial.hamidrezak.wordstutorials W/System: ClassLoader referenced unknown path: /data/app/com.wordstutorial.hamidrezak.wordstutorials-1/lib/x86
01-09 17:59:26.902 27683-27683/com.wordstutorial.hamidrezak.wordstutorials W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
01-09 17:59:27.099 27683-27711/com.wordstutorial.hamidrezak.wordstutorials I/OpenGLRenderer: Initialized EGL, version 1.4
01-09 17:59:27.099 27683-27711/com.wordstutorial.hamidrezak.wordstutorials D/OpenGLRenderer: Swap behavior 1
01-09 17:59:27.160 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 17:59:27.160 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d9648a0, error=EGL_BAD_MATCH
01-09 17:59:28.300 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 17:59:28.301 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d964a60, error=EGL_BAD_MATCH
01-09 17:59:30.948 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
01-09 17:59:30.948 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteLog: (14) os_unix.c:32456: (2) open(//data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/words_db.db) - 
01-09 17:59:30.949 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteDatabase: Failed to open database 'data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/words_db.db'.
                                                                                             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.openDatabase(SQLiteDatabase.java:671)
                                                                                                 at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.checkDatabase(DatabaseManager.java:63)
                                                                                                 at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.createDatabase(DatabaseManager.java:42)
                                                                                                 at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.loadDatabase(WordsActivity.java:41)
                                                                                                 at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.onCreate(WordsActivity.java:28)
                                                                                                 at android.app.Activity.performCreate(Activity.java:6662)
                                                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
                                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                                                                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                                                                                                 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)
01-09 17:59:31.466 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 17:59:31.466 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d90cf20, error=EGL_BAD_MATCH
01-09 17:59:32.089 27683-27683/com.wordstutorial.hamidrezak.wordstutorials D/AndroidRuntime: Shutting down VM
01-09 17:59:32.089 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                             Process: com.wordstutorial.hamidrezak.wordstutorials, PID: 27683
                                                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wordstutorial.hamidrezak.wordstutorials/com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.getSoundState()' on a null object reference
                                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                                                                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                                                                                                 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: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.getSoundState()' on a null object reference
                                                                                                 at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordActivity.onCreate(WordActivity.java:43)
                                                                                                 at android.app.Activity.performCreate(Activity.java:6662)
                                                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
                                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
                                                                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
                                                                                                 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) 

 

ممنون میشم کمک کنید ببینم مشکل از کجاست؟!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط MaHdI-09
      سلام دوستان.من ی مشکلی دارم..برنامه من تو امولاتور خیلی خوب کار میکنه و اتصال به دیتابیس آنلاین داره..اما تو گوشی وقتی میخواد چیزی به دیتابیس ارسال کن فورس کلوز میده.ممنون میشم راهنمایی کنید.
    • توسط مهندس
      سلام.
      دوستان من در برنامه ام دو تا سطح دسترسی دارم، یکی مدیران و دیگری کاربران معمولی با دوتا پنل کاربری مدیر و پنل کاربری کاربر معمولی.
      در ابتدا کاربر معمولی ثبت نام میکنه و شماره موبایل و اسمش رو وارد میکنه، بعدش باید قبل ازینکه بتونه در برنامه وارد بشه ، باید توسط مدیر احراز هویت بشه و شماره موبایل و اسمش برای مدیر ارسال بشه. بعد مدیر یک کد برای کاربر میفرسته و میتونه وارد بشه.
      ممکنه راهنمایی کنید که چطور میتونم این بخش رو طراحی کنم؟؟؟چطور میشه در پنل کاربری مدیران، مدیر رو از وجود یک کاربر جدید مطلع کرد و چجوری با درخواست ثبت نام یک کاربر معمولی، مدیر رو مطلع کنم؟؟؟
      برنامه نویسی سمت سرور رو با php انجام میدم.و از دیتابیس php my admin استفاده میکنم.
      خواهش میکنم راهنمایی کنید.
    • توسط Farzad Sarseifi

      دریافت کتابخانه material-dialogs
       
      لینک گیت هاب :
      https://github.com/afollestad/material-dialogs
       
      دانلود سورس از انجمن اندروید ایران
      material-dialogs-master.zip
       
       
    • توسط farhad68
      سلام من تازه وارد هستم توی برنامه نویسی اندروید میخوام توی ایکلیپس یه کتاب طراحی کنم ولی می خواستم دیتابیسش انلاین بشه چطوری باید این کارو بکنم دوم اینه به کاربرم بگه نسخه جدید رو دانلود کند
    • توسط saeed1366412
      با سلام من یه برنامه مشاهده کردم که از دیتابیس اماده sqlite استفاده کرده بود ولی دیتابیس بدون اینکه کپی بشه برنامه کار میکنه میخواستم بدونم از چه روشی استفاده شده اگه میشه کدی یا لینک آموزشی هست ارسال کنه

       
       
  • فایل