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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در استفاده از دیتابیس خارجی

مشکل در استفاده از دیتابیس خارجی

#1
سلام خدمت همه اعضای گل کلیدستان بخصوص مدیر عزیز که همیشه راهنمایی می کنن Heart

تو پروژم می خوام از دیتابیس خارجی استفاده کنم ولی به مشکل می خورم
کدهای برنام اینا هستن




کد پی‌اچ‌پی:
package BaseClass;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.example.Saadi.BaseClass;
import com.example.Saadi.R;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

public class 
DataBase extends SQLiteOpenHelper {
     
 String DB_PATH null;
     
     public static  String DB_NAME ;
     
   private SQLiteDatabase myDataBase;
     
   private final Context myContext;
     
     
   /**
         * Constructor Takes and keeps a reference of the passed context in order to
         * access to the application assets and resources.
         * 
         * @param context
         */
     
   public DataBase(Context context) {
     
     
       super(contextDB_NAMEnull1);
     
       this.myContext context;
     
       this.DB_NAME=this.myContext.getResources().getString(R.string.DB_Name);
     
       if(android.os.Build.VERSION.SDK_INT >= 17) {
     
              DB_PATH context.getApplicationInfo().dataDir "/databases/"        
                
} else {
     
              DB_PATH "/data/data/" context.getPackageName() + "/databases/";
     
           }
     
       
        
}
     
     
   public void createDataBase() throws IOException {
     
     
       boolean dbExist checkDataBase();
     
       SQLiteDatabase db_Read null;
     
       if (dbExist) {
     
           // do nothing - database already exist
     
       } else {
     
     
           // By calling this method and empty database will be created into
     
           // the default system path
     
           // of your application so we are gonna be able to overwrite that
     
           // database with our database.
     
           
                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(myPathnull,
     
                   SQLiteDatabase.OPEN_READONLY);
     
     
       } catch (SQLiteException e) {
     
     
           // database does\'t exist yet.
     
     
       }
     
     
       if (checkDB != null) {
     
     
           checkDB.close();
     
     
       }
     
     
       return checkDB != null true false;
     
   }
     
     
   /**
         * Copies your database from your local assets-folder to the just created
         * empty database in the system folder, from where it can be accessed and
         * handled. This is done by transfering bytestream.
         * */
     
   private void copyDataBase() throws IOException {
     
     
       // Open your local db as the input stream
     
       InputStream myInput myContext.getAssets().open(DB_NAME);
     
     
       // Path to the just created empty db
     
       String outFileName DB_PATH DB_NAME;
     
     
       File f = new FileDB_PATH);    
            if 
(!f.exists()){
     
           f.mkdir();
     
           f.createNewFile();
     
       }
     
       
            
            
// Open the empty db as the output stream
     
       OutputStream myOutput = new FileOutputStream(outFileName);
     
     
       // transfer bytes from the inputfile to the outputfile
     
       byte[] buffer = new byte[1024];
     
       int length;
     
       while ((length myInput.read(buffer)) > 0) {
     
           myOutput.write(buffer0length);
     
       }
     
     
       // Close the streams
     
       myOutput.flush();
     
       myOutput.close();
     
       myInput.close();
     
     
   }
     
     
   public void openDataBase() throws SQLException {
     
     
       // Open the database
     
       String myPath DB_PATH DB_NAME;
     
       // SQLiteDatabase.NO_LOCALIZED_COLLATORS
     
       myDataBase SQLiteDatabase.openDatabase(myPathnull,
     
               SQLiteDatabase.OPEN_READONLY
                            
SQLiteDatabase.NO_LOCALIZED_COLLATORS
                            
SQLiteDatabase.CREATE_IF_NECESSARY);
     
     
   }
     
     
   @Override
        public synchronized void close
() {
     
     
       if (myDataBase != null)
     
           myDataBase.close();
     
     
       super.close();
     
     
   }
     
/*
        // return cursor
        public Cursor query(String table, String[] columns, String selection,
                String[] selectionArgs, String groupBy, String having,
                String orderBy) {
            return myDataBase.query("pwp_singers", null, null, null, null, null,
                    null);
     
        }
     */
     
   @Override
        public void onCreate
(SQLiteDatabase arg0) {
     
       // TODO Auto-generated method stub
     
        
        
}
     
     
   @Override
        public void onUpgrade
(SQLiteDatabase arg0int arg1int arg2) {
     
       // TODO Auto-generated method stub
     
        
        
}
     
    } 

تو کلاس دیگم که از کلاس بالا استفاده میکنه این تابع ها رو دارم
کد پی‌اچ‌پی:
public String[][] DataBase_Operation(int ColumnDBCount)
{
    
Load_Database();
    
String[][] AllRowQuery null;    
     
db myDbHelper.getReadableDatabase();
     
     
Cursor    c db.rawQuery("SELECT * FROM tblHeader, null);
     AllRowQuery=new String[ColumnDBCount][c.getCount()];
      if(c.moveToFirst()){
            int counter=0;
            do{
                for(int i=0;i<ColumnDBCount;i++)
                {
                    AllRowQuery[i][counter]=c.getString(i);
                }
                
                counter++;
              
            }
            while(c.moveToNext());
        }
      return AllRowQuery;
}
public void Load_Database() throws Error {
    myDbHelper =new DataBase(_context);
    try {

        myDbHelper.createDataBase();

    } catch (IOException ioe) {

        throw new Error("
Unable to create database");

    }

    try {

        myDbHelper.openDataBase();
    } catch (SQLException sqle) {
        throw sqle;

    }


حالا به محض رسیدن به Cursor ینی خط هفتم یه همچین خطایی رو میده

کد پی‌اچ‌پی:
android.database.sqlite.SQLiteExceptionno such table


stackoverflow رو زیر و رو کردم ولی چیزی دستگیرم نشد خواهشا هرکی می تونه کمک کنه دو روزه نتونستم ی خط کد بزنم Huh Huh Huh Huh
پاسخ


پیام‌های این موضوع
مشکل در استفاده از دیتابیس خارجی - توسط saeedfozol - ۱۳۹۵/۰۹/۱۵, ۱۲:۲۸ ق.ظ
RE: مشکل در استفاده از دیتابیس خارجی - توسط s.saeid - ۱۳۹۵/۰۹/۱۵, ۱۱:۳۷ ق.ظ
RE: مشکل در استفاده از دیتابیس خارجی - توسط saeedfozol - ۱۳۹۵/۰۹/۱۵, ۱۲:۰۵ ب.ظ
RE: مشکل در استفاده از دیتابیس خارجی - توسط saeedfozol - ۱۳۹۵/۰۹/۱۵, ۰۱:۴۷ ب.ظ
RE: مشکل در استفاده از دیتابیس خارجی - توسط saeedfozol - ۱۳۹۵/۰۹/۲۸, ۰۶:۵۳ ب.ظ

پرش به انجمن:


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