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) 

 

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

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط مهندس
      سلام.
      من فایل های php ارتباط با سرورمو اپلود کردم در فایل public html و داخل برنامه هم ک url ست کردم برای ارتباط با سرور.
      الان یک مشکلی ک دارم بحث امنیته.
      مثلا ما تو وب سایت بحث کوکی ها و سشن ها رو داریم. 
      تو اندروید برای امنیت باید چیکار کنیم؟؟
      در ضمن مثلا فرض کنید url من https://www.android.com/app/register.php .
      حالا شما فرض کنید یه هکر براحتی میتونه ب این صفحه دسترسی پیدا کنه دیتا اینرزت کنه در دیتابیس.
      یا کلا در این ادرس https://www.android.com/app/ ب تمام فایل ها میتونه دسترسی پیدا کنه.

       
    • توسط niloobani
      سلام .به یک توسعه دهنده اپلیکیشن مسلط به ساخت اپلیکیشن برای اندروید و ios در یک شرکت معتبر نیاز دارم . لطفا در صورت داشتن شرایط به من پیام بدید
    • توسط snowman
      سلام
      یه برنامه کتاب الکترونیکی نوشتم که همه چیش درست کار میکنه فقط تو قسمت جستجوش گیر کردم. تو برنامه از sqlite برای دیتابیس استفاده کردم که شامل یه table هست .برنامه 4 قسمت داره که واسه هر قسمت یه اکتیویتی ساختم که با استفاده از لیست ویو اطلاعاتو نشون میده . تو قسمت جستجو نمیتونم آیتم رو به اکتیویتی مورد نظر پاس بدم .نمیدونم اصلا امکانش هست یا نه راستش این اولین برنامم هستش ممنون میشم راهنماییم کنیید.
      import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.HashMap; import java.util.List; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; public class search extends AppCompatActivity { private DatabaseHandler db; private ListView resultListView; private List<HashMap<String , Object>> resultBooks; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); resultListView = (ListView) findViewById(R.id.resultListView); db = new DatabaseHandler( getBaseContext() ); db.open(); if( db.getScreenState() == 1 ) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } db.close(); } public void onBtnFindClick( View v ) { resultListView.setAdapter(null); RadioGroup rGroup = (RadioGroup) findViewById(R.id.rgItems); int selected_item_id = rGroup.getCheckedRadioButtonId(); RadioButton rbTitle = (RadioButton) findViewById(R.id.rbSearchByTitle); RadioButton rbContent = (RadioButton) findViewById(R.id.rbSearchByContent); String search_by = ""; if( selected_item_id == rbTitle.getId() ) { search_by = "title"; } else if( selected_item_id == rbContent.getId() ) { search_by = "content"; } EditText etSearchKey = (EditText) findViewById(R.id.txtSearchKey); if( etSearchKey.getText().length() < 1 ) { Toast.makeText( getBaseContext() , getString(R.string.search_error_enter_text) , Toast.LENGTH_SHORT ).show(); return; } String key = etSearchKey.getText().toString().trim(); String[] keys = key.split("\\s+"); String query = search_by + " LIKE '%" + keys[0] + "%'"; StringBuilder sb = new StringBuilder(); for( int i = 1; i < keys.length; i ++ ) { sb.append( " OR " + search_by + " LIKE '%" + keys[i] + "%'" ); } query = query + sb.toString(); /* title LIKE '%ali%' OR title LIKE '%reza%' OR ... */ showResultOfSearch(query); } public void showResultOfSearch(final String query ) { db.open(); resultBooks = db.getTableOfResultsOfSearch( query ); db.close(); if( resultBooks.size() < 1 ) { Toast.makeText( getBaseContext() , getString(R.string.search_error_not_found) , Toast.LENGTH_SHORT ).show(); return ; } String[] from = { "title" , "fav_flag" , "see_flag" }; int[] to = { R.id.txtTitle , R.id.setFav , R.id.setSee }; SimpleAdapter adb = new SimpleAdapter( getBaseContext() , resultBooks , R.layout.tbl_content_list_row , from , to ); resultListView.setAdapter(adb); resultListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i = new Intent(getBaseContext(), book_content4.class); String my_id = resultBooks.get(position).get("id").toString(); i.putExtra("id", my_id); startActivity(i); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); } } ); } protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } }  
    • توسط مهندس
      سلام.
      دوستان من اپلیکیشنم رو در هیچ مارکتی نذاشتم.
      هم اکنون میخام پیغام اپدیت بفرستم برای کاربرا و اگر کاربر روی دکمه اوکی لمس کرد، نسخه جدید براش دانلود بشه و خودکار نصب بشه.
      من سمت سرور با php کار میکنم.
      چطور میتونم اپ رو در سرور اپلود کنم و چطور میتونم کاربرو هدایت کنم ک دانلود کنه؟؟
    • توسط fahmide
      با سلام
      من توی پروژم یک ExpandableListView دارم و یه دیتابیس توی دیتابیس با استفاده از کد والد ، والد هرکدوم از فرزندان مشخص میشه. مسله اینه که کاربر امکان اضافه کردن والد و فرزند رو توی دیتابیس داره من هرکاری میکنم درست لود نمیشه اگه ممکنه راهنمایی کنین

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin
  • فایل