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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دیتابیس برنامه اندروید پرمحتوا

دیتابیس برنامه اندروید پرمحتوا

#2
سلام:
به نظر من اگر از دیتابیس خارجی استفاده کنی ، مدیریت آن راحت تر است  . دیتابیس خودت رو با یک برنامه مثل sqlite manager که add on فایرفاکس هست بساز و آن را در پوشه assets قرار بده . و کلاس زیر را استفاده کن :

کد پی‌اچ‌پی:
public class DataBaseHelper extends SQLiteOpenHelper{

private static 
String DB_PATH "/data/data/com.example.nahj_multi_languages/databases/";  //فقط اسم پکیج برنامه خودت رو عوض کن
private static String DB_NAME "hekmatha.sqlite";   //اسم دیتابیس خودت 
private SQLiteDatabase myDataBase;
private final 
Context myContext;


    public 
DataBaseHelper(Context context) {

        
super(contextDB_NAMEnull1);

        
this.myContext context;
        
                    }

        public 
void createDataBase() throws IOException{

                
boolean dbExist checkDataBase();
                    
                    if(
dbExist){


                    }
                    
                    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(myPathnullSQLiteDatabase.OPEN_READONLY);

    }
    
    catch(
SQLiteException e){

        
//database does't exist yet.

    
}

        if(
checkDB != null){

        
checkDB.close();
        
    
        }

        return 
checkDB != null true false;

        
        
        }





    @
Override
    
public synchronized SQLiteDatabase getReadableDatabase() {

    return 
super.getReadableDatabase();

    }




    private 
void copyDataBase() throws IOException{
        
        
InputStream myInput myContext.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(buffer0length);

        
    }


    
myOutput.flush();
    
myOutput.close();
    
myInput.close();


        }


    
        public 
void openDataBase() throws SQLException{
            
String myPath DB_PATH DB_NAME;
            
myDataBase SQLiteDatabase.openDatabase(myPathnullSQLiteDatabase.OPEN_READONLY|SQLiteDatabase.NO_LOCALIZED_COLLATORS);


        }
        
    
        @
Override
        
public synchronized void close() {

    if(
myDataBase != null)

        
myDataBase.close();

    
super.close();
}

    
    @
Override
    
public void onCreate(SQLiteDatabase db) {

}

    @
Override
    
public void onUpgrade(SQLiteDatabase dbint oldVersionint newVersion) {
}



بعد در هر اکتیویتی باید کد زیر را بنویسی تا به دیتابیس دسترسی داشته باشی و بتونی read , write کنی:

کد پی‌اچ‌پی:
DataBaseHelper mydatabasehelper=new DataBaseHelper(getActivity().getApplicationContext());
        
mydatabasehelper=new DataBaseHelper(getActivity());
        try {
            
mydatabasehelper.createDataBase();
        }
            catch (
IOException ioe) {
                throw new 
Error("Unable to create database");
                    }
            try {
                
mydatabasehelper.openDataBase();
            }
                catch (
SQLException sqle) {
                    
sqle.printStackTrace();
                    }
            
            
db=mydatabasehelper.getReadableDatabase();
            
mcursor=db.rawQuery("SELECT text FROM "+zaban+" WHERE id="+id+""null);
            
mcursor.moveToFirst();
            
        
mytext.setText(mcursor.getString(0)); 

در مورد جستجوی مطالب فکر نمی کنم اگر بتونی select مناسب رو انجام بدی مشکلی وجود داشته باشد اما یه نکته مهمتر که من خودم هم با او مشکل داشتم اینه که بعد از اینکه select رو انجام می دادم چون متن خیلی خیلی برای sqlite بزرگ بود و اینکه cpu گوشی محدود میباشد(متن بعضی از سطرهای من به 49هزار کاراکتر میرسید). هنگام نشاندن در textview یه مقدار کند بود که از کلاس Asynctask استفاده کردم که بهتر شد (راه حل بهتر این بود که متن ها ی بزرگ را داخل چند سطر می نوشتم )
پاسخ
 سپاس شده توسط osam20 ، admin


پیام‌های این موضوع
دیتابیس برنامه اندروید پرمحتوا - توسط osam20 - ۱۳۹۴/۰۵/۲۵, ۱۲:۵۴ ق.ظ
RE: دیتابیس برنامه پرمحتوا - توسط hamidrezass - ۱۳۹۴/۰۵/۲۵, ۱۲:۲۵ ب.ظ
RE: دیتابیس برنامه پرمحتوا - توسط osam20 - ۱۳۹۴/۰۵/۲۵, ۱۲:۵۷ ب.ظ
RE: دیتابیس برنامه اندروید پرمحتوا - توسط admin - ۱۳۹۴/۰۵/۲۵, ۰۱:۳۲ ب.ظ
RE: دیتابیس برنامه اندروید پرمحتوا - توسط osam20 - ۱۳۹۴/۰۵/۲۸, ۰۷:۵۴ ب.ظ
RE: دیتابیس برنامه اندروید پرمحتوا - توسط hamidrezass - ۱۳۹۴/۰۵/۲۸, ۰۸:۴۹ ب.ظ
RE: دیتابیس برنامه اندروید پرمحتوا - توسط osam20 - ۱۳۹۴/۰۵/۲۸, ۰۹:۱۰ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان