hamidreza.kh

مشکل در دیتابیس

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

سلام خسته نباشید 

به یه مشکلی خوردم تو فراخونی دیتابیس،نکته عجیبش اینه که من کدای دیتابیس رو دستکاری نکردم فقط از دیتابیس لوکاس استفاده میکنم یه سری تغییرات تو ستون های هر جدول تو دیتابیسم دادم و جالب تر از اون اینکه حالا که کدارو به حالت نرمالم برمیگردونم بازم ارور میده و میگه دیتابیس کپی نمیشه و نمیتونه باز بشه !!!

این لیست کلاس دیتابیسم:

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) {

            e.printStackTrace();
            throw new Error("Error copying database");
        }

    }

    private boolean checkDatabase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB.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 void onCreate(SQLiteDatabase db) {
       ///DO NOTHING

    }


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

    }

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

کلاس پست هایی که میخوام بگیرم از دیتابیس

public class WordsActivity extends AppCompatActivity {

    private List<Word> words;
    DatabaseManager db;

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

        loadDatabase();

        TextAdapter wordsAdapter = new TextAdapter(this,words);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new GridLayoutManager(WordsActivity.this, 2, LinearLayoutManager.VERTICAL, false));
        recyclerView.setAdapter(wordsAdapter);

    }

    public void loadDatabase() {

        db=new DatabaseManager(WordsActivity.this);

        db.createDatabase();
        db.openDataBase();

        words=new ArrayList<>();

        Cursor cursor = db.queryData(" SELECT * FROM " + DatabaseManager.DB_TABLE_WORDS);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    Word word = new Word();

                    word.setId(cursor.getInt(0));
                    word.setTitle(cursor.getString(1));
                    word.setImageview(cursor.getString(2));
                    word.setSound(cursor.getString(3));

               words.add(word);
                } while (cursor.moveToNext());
            }
        }
        db.close();
    }

}

 

اینم کلاس اداپترم

public class TextAdapter extends RecyclerView.Adapter<TextAdapter.TestViewHolder> {

    private Context context;
    private List<Word> words;

    public TextAdapter(Context context, List<Word> words) {

        this.context = context;
        this.words = words;
    }


    @Override
    public TestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.tutorial_boxs_layout, parent, false);
        return new TestViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final TestViewHolder holder, int position) {

        final Word word=words.get(position);
        holder.txtTitle.setText(word.getTitle());

        int resID = context.getResources().getIdentifier(word.getImageview(), "mipmap", context.getPackageName());
            holder.imageWord.setImageResource(resID);


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

                Intent intent=new Intent(context, WordActivity.class);

                intent.putExtra("id",word.getId());
                intent.putExtra("word",word.getTitle());
                intent.putExtra("image",word.getImageview());
                intent.putExtra("sound",word.getSound());

                context.startActivity(intent);

            }
        });
    }


    @Override
    public int getItemCount() {
        return words.size();
    }


    public class TestViewHolder extends RecyclerView.ViewHolder {

        private TextView txtTitle;
        private ImageView imageWord;


        public TestViewHolder(View itemView) {
            super(itemView);

            txtTitle = (TextView) itemView.findViewById(R.id.box_title);
            imageWord = (ImageView) itemView.findViewById(R.id.box_image);

        }
    }
}

اینم ارور هایی که میده

   --------- beginning of crash
01-09 13:30:00.085 4969-4969/com.wordstutorial.hamidrezak.wordstutorials E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                           Process: com.wordstutorial.hamidrezak.wordstutorials, PID: 4969
                                                                                           java.lang.Error: Error copying database
                                                                                               at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.createDatabase(DatabaseManager.java:57)
                                                                                               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)

 

 

مشکل از کجاست؟؟

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


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

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

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

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

       
       
    • توسط 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; } } }  
    • توسط alireza123
      سلام
      من میخوام ادرس عکس رو از دیتابیس وردپرس بگیرم.
      تو جدول wp_posts 
      gurl عکس به صورت زیر هستش
      http://daaloon.net/?attachment_id=326
      چطور میتونم به عکس دسترسی داشته باشم ؟
    • توسط nima1382na12
      باسلام خدمت دوستان عزیز
      من میخوام یه برنامه خیلی خیلی ساده بسازم که وقتی من یک مطلبی رو توی دیتابیس برنامم گذاشتم ، کاربر با متصل شدن به اینترنت بتونه اون رو ببینه .
      اما بلد نیستم که چطور یک دیتابیس آنلاین بسازم و به سرور متصلش کنم و بیارمش توی اندروید استودیو
      خواهشا کامل جواب بدید
      من در سطح متوسط رو به پایین هستم
  • فایل