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) 

 

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

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط farhad68
      سلام من تازه وارد هستم توی برنامه نویسی اندروید میخوام توی ایکلیپس یه کتاب طراحی کنم ولی می خواستم دیتابیسش انلاین بشه چطوری باید این کارو بکنم دوم اینه به کاربرم بگه نسخه جدید رو دانلود کند
    • توسط saeed1366412
      با سلام من یه برنامه مشاهده کردم که از دیتابیس اماده sqlite استفاده کرده بود ولی دیتابیس بدون اینکه کپی بشه برنامه کار میکنه میخواستم بدونم از چه روشی استفاده شده اگه میشه کدی یا لینک آموزشی هست ارسال کنه

       
       
    • توسط Farzad Sarseifi
      لیست ویو  Listview :
       در حالت استاندارد به صورت یک  لیست متنی میباشد. که اطلاعات را بصورت آرایه ای میسازد.لیست ویو بطور وفور در بیشتر برنامه های اندرویدی یافت میشود مثلا  لیست شماره تلفن ها، تماسها و غیره، قرار میگیرد.
      برای شروع به مثال ساده زیر توجه کنید:
      در این مثال قصد داریم یک لیست ساده بسازیم که لیست ماه های میلادی را نمایش دهد
      مرحله 1 ) ابتدا باید در فایل main.xml خود ویجت لیست ویو را قرار دهیم.
      <?xml version="1.0" encoding="utf-8"?> <ListView android:orientation="vertical"    android:layout_width="fill_parent"  android:layout_height="fill_parent"      android:layout_height="fill_parent"     android:id="@+id/mainListView"/>                مرحله 2 )برای نمایش لیست باید به اکتیویتی اصلی که قرار است لیست مربوطه فراخونی شود مراجعه کنیم  و لیست را بسازیم.
      public class ListActivity extends Activity { String[] monthsArray = { "JAN", "FEB", "MAR", "APR", "MAY", "JUNE", "JULY", "AUG", "SEPT", "OCT", "NOV", "DEC" };    private ListView monthsListView;   private ArrayAdapter arrayAdapter;     @Override    public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);     setContentView(R.layout.activity_list);    monthsListView = (ListView) findViewById(R.id.mainListView);     arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, monthsArray); monthsListView.setAdapter(arrayAdapter);    } }   شرح کدها :
      1-ابتدا باید ارایه خود را تعریف کنیم
        String[] monthsArray = { "JAN", "FEB", "MAR", "APR", "MAY", "JUNE", "JULY", "AUG", "SEPT", "OCT", "NOV", "DEC" };   2-لیست ویو را تعریف کنیم :
       private ListView monthsListView;   3-یک متغیر سراسری از نوع Arraylist ایجاد میکنیم:
       private ArrayAdapter arrayAdapter;   4- در مرحله آخر لیست را میسازیم :
       
      arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, monthsArray);                 monthsListView.setAdapter(arrayAdapter);  
       
       
    • توسط مهندس
      سلام.
      من با استفاده از کلاس gpsTracker میخام موقعیت جاری کاربر رو دریافت کنم.اما در خروجی lat و long رو برای من صفر برمیگردونه؟؟؟؟؟؟؟؟؟؟
      این کدی هست ک در اکتیویتی نوشتم.
      کد هایی که در اکتیویتی نوشتم ب همراه کلاس gpsTracker رو ضمیمه کردم.
      خواهش می کنم کمک کنید
       
      activity.txt
      GPSTracker.java
    • توسط saeed1366412
      سلام من یک دیتابیس دارم که با cursor جستجو رو انجام میدم میخوام کلمه جستجو شده رنگی باشه از چه کدی استفاده کنم و کجا ها رو تغییر بدم به راهنمایی کامل احتیاج دارم
      public class Search extends AppCompatActivity { android.widget.SearchView et; private StoryDataSource datasource; private List<Story> stories; private List<StoryFav> stories1; private ListView listView; private ArrayAdapter<Story> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); et = (android.widget.SearchView) findViewById(R.id.search); listView = (ListView) findViewById(R.id.storyListView); datasource = new StoryDataSource(getBaseContext()); stories1=datasource.getAllStories(); if (stories1.size()==0){ datasource.copyDbFile(); } et.setOnQueryTextListener(new android.widget.SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { if (newText.length() ==0){ stories = datasource.getAllsearch("#@"); }else { stories = datasource.getAllsearch(newText); } refreshDisplay(); return false; } }); } private void refreshDisplay() { adapter = new SearchListAdapter(this, R.layout.story_list_item, stories); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Story story = stories.get(position); Intent intent = new Intent(Search.this, Word.class); intent.putExtra(".db", story); startActivity(intent); } }); } public class SearchListAdapter extends ArrayAdapter<Story>{ private int totalPages = 0; private int currentPageNo = 0; private StoryDataSource datasource; private Story story; private Context context; private int resourceId; private List<Story> stories; public SearchListAdapter(Context context, int resourceId, List<Story> stories) { super(context, resourceId, stories); this.context = context; this.resourceId = resourceId; this.stories = stories; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(resourceId, parent, false); final Story item = stories.get(position); TextView txt_name = (TextView) view.findViewById(R.id.txt_name_listitem); txt_name.setText(item.getName()); return view; } } }  
  • فایل