رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

مشکل در عدم پیدا کردن دیتابیس


پست های پیشنهاد شده

سلام موقع اجرا برنامم برنامه خطا میده ک همچین دیتابیس و جدولی  پیدا نکرده 

این درحالی هست که من هم دیتابیس و جدول رو ساختم و در پوشه assets  قرار دادم 

 

sql.jpg

selectdb.jpg

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 47 دقیقه قبل، esikley گفته است :

سلام موقع اجرا برنامم برنامه خطا میده ک همچین دیتابیس و جدولی  پیدا نکرده 

این درحالی هست که من هم دیتابیس و جدول رو ساختم و در پوشه assets  قرار دادم 

 

sql.jpg

selectdb.jpg

 

این موارد را بررسی کنید

1-آیا دستگاهی که برنامه را اجرا میکنید اندروید آن بیشتر از 6 میباشد و مجوز Permission grant داده نشده است و دیتابیس کپی نشده است

2-کد کپی کردن دیتابیس روی sdCard رو که نوشتید بزارید تا بررسی کنیم.

 

 

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

روی گوشی با ورژن 4.4.2 اجرا کردم
 

کل کد اکتیویتی مین ک کد دیتابیس هم شاملش میشه.

public class ActivityMain extends AppCompatActivity {

    //   public static Context context; ////11
    DrawerLayout drawerLayout;
    NavigationView navigationView;
    ImageView hamburger;
    SQLiteDatabase database;
    String destPath;
    FloatingActionButton floatingActionButton;


    public static ArrayList<Structure> flower = new ArrayList<Structure>();
    public static ArrayList<Structure> tree = new ArrayList<Structure>();
    public static ArrayList<Structure> favorite = new ArrayList<Structure>();
    public static ArrayList<Structure> allItems = new ArrayList<Structure>();



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


//        context.getApplicationContext();
        //    context=getApplicationContext();//1
        setTabOption();
        floatingActionButton = (FloatingActionButton) findViewById(R.id.flooting);

        drawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer);
        navigationView = (NavigationView) findViewById(R.id.navigation_view);
        hamburger = (ImageView) findViewById(R.id.hamburger);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(floatingActionButton, "اموزش", Snackbar.LENGTH_SHORT).show();

            }
        });
        hamburger.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.RIGHT);
            }
        });
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                int id = item.getItemId();
                if (id == R.id.search) {
                    //   Log.i("Log", "Hello !");
                    Intent intent = new Intent(ActivityMain.this, ActivitySearch.class);
                    ActivityMain.this.startActivity(intent);

                }
                return true;
            }
        });

        try {
            destPath = Environment
                    .getExternalStorageDirectory()
                    .getAbsolutePath() + "/book-database/";  ////======
            //  Log.i("log","destination path :"+destPath);
            File fIle = new File(destPath);
            if (!fIle.exists()) {
                fIle.mkdirs();
                fIle.createNewFile();
                CopyDB(getBaseContext().getAssets().open("md_book.sqlite"), new FileOutputStream(destPath + "/md_book.sqlite"));///////====
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
        }

        selectFlower();
        selectTree();
        selectFavorite();
        selectAllItems();


    }

    @Override
    public void onBackPressed() {
        if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {
            drawerLayout.closeDrawer(Gravity.RIGHT);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (favorite.isEmpty()) {
            favorite.clear();
            selectFavorite();
        } else if (flower.isEmpty()) {
            flower.clear();
            selectFlower();

        } else if (!tree.isEmpty()) {
            tree.clear();
            selectTree();
        } else if (!allItems.isEmpty()) {
            allItems.clear();
            selectAllItems();
        }
    }

    private void CopyDB(InputStream inputStream,
                        OutputStream outputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {

            outputStream.write(buffer, 0, length);
        }
        inputStream.close();
        outputStream.close();
    }

    private void setTabOption() {
        ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
        viewPager.setAdapter(new AdapterFragment(getSupportFragmentManager()));
        TabLayout tabStrip = (TabLayout) findViewById(R.id.tabs);
        tabStrip.setupWithViewPager(viewPager);
    }

    private void selectFlower() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);/////////=================
        Cursor cursor = database.rawQuery("SELECT * FROM main WHERE subject ='flower'", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));

            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            flower.add(struct);
        }
    }

    private void selectTree() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);/////=====
        Cursor cursor = database.rawQuery("SELECT * FROM main  WHERE subject ='tree'", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            tree.add(struct);
        }
    }


    private void selectFavorite() {

        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);////////====
        Cursor cursor = database.rawQuery("SELECT * FROM main WHERE fav =1", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            favorite.add(struct);
        }
    }

    private void selectAllItems() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);////////====
        Cursor cursor = database.rawQuery("SELECT * FROM main", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            favorite.add(struct);
            allItems.add(struct);

        }
    }


}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 3 ساعت قبل، esikley گفته است :

روی گوشی با ورژن 4.4.2 اجرا کردم
 

کل کد اکتیویتی مین ک کد دیتابیس هم شاملش میشه.


public class ActivityMain extends AppCompatActivity {

    //   public static Context context; ////11
    DrawerLayout drawerLayout;
    NavigationView navigationView;
    ImageView hamburger;
    SQLiteDatabase database;
    String destPath;
    FloatingActionButton floatingActionButton;


    public static ArrayList<Structure> flower = new ArrayList<Structure>();
    public static ArrayList<Structure> tree = new ArrayList<Structure>();
    public static ArrayList<Structure> favorite = new ArrayList<Structure>();
    public static ArrayList<Structure> allItems = new ArrayList<Structure>();



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


//        context.getApplicationContext();
        //    context=getApplicationContext();//1
        setTabOption();
        floatingActionButton = (FloatingActionButton) findViewById(R.id.flooting);

        drawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer);
        navigationView = (NavigationView) findViewById(R.id.navigation_view);
        hamburger = (ImageView) findViewById(R.id.hamburger);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(floatingActionButton, "اموزش", Snackbar.LENGTH_SHORT).show();

            }
        });
        hamburger.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.RIGHT);
            }
        });
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                int id = item.getItemId();
                if (id == R.id.search) {
                    //   Log.i("Log", "Hello !");
                    Intent intent = new Intent(ActivityMain.this, ActivitySearch.class);
                    ActivityMain.this.startActivity(intent);

                }
                return true;
            }
        });

        try {
            destPath = Environment
                    .getExternalStorageDirectory()
                    .getAbsolutePath() + "/book-database/";  ////======
            //  Log.i("log","destination path :"+destPath);
            File fIle = new File(destPath);
            if (!fIle.exists()) {
                fIle.mkdirs();
                fIle.createNewFile();
                CopyDB(getBaseContext().getAssets().open("md_book.sqlite"), new FileOutputStream(destPath + "/md_book.sqlite"));///////====
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
        }

        selectFlower();
        selectTree();
        selectFavorite();
        selectAllItems();


    }

    @Override
    public void onBackPressed() {
        if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {
            drawerLayout.closeDrawer(Gravity.RIGHT);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (favorite.isEmpty()) {
            favorite.clear();
            selectFavorite();
        } else if (flower.isEmpty()) {
            flower.clear();
            selectFlower();

        } else if (!tree.isEmpty()) {
            tree.clear();
            selectTree();
        } else if (!allItems.isEmpty()) {
            allItems.clear();
            selectAllItems();
        }
    }

    private void CopyDB(InputStream inputStream,
                        OutputStream outputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {

            outputStream.write(buffer, 0, length);
        }
        inputStream.close();
        outputStream.close();
    }

    private void setTabOption() {
        ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
        viewPager.setAdapter(new AdapterFragment(getSupportFragmentManager()));
        TabLayout tabStrip = (TabLayout) findViewById(R.id.tabs);
        tabStrip.setupWithViewPager(viewPager);
    }

    private void selectFlower() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);/////////=================
        Cursor cursor = database.rawQuery("SELECT * FROM main WHERE subject ='flower'", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));

            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            flower.add(struct);
        }
    }

    private void selectTree() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);/////=====
        Cursor cursor = database.rawQuery("SELECT * FROM main  WHERE subject ='tree'", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            tree.add(struct);
        }
    }


    private void selectFavorite() {

        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);////////====
        Cursor cursor = database.rawQuery("SELECT * FROM main WHERE fav =1", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            favorite.add(struct);
        }
    }

    private void selectAllItems() {
        database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.sqlite", null);////////====
        Cursor cursor = database.rawQuery("SELECT * FROM main", null);
        while (cursor.moveToNext()) {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String content = cursor.getString(cursor.getColumnIndex("content"));
            String more = cursor.getString(cursor.getColumnIndex("more"));
            String imgAddress = cursor.getString(cursor.getColumnIndex("imgAddress"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            Structure struct = new Structure(title, content, more, imgAddress, id);
            struct.setTitle(title);
            struct.setContent(content);
            struct.setImgAddress(imgAddress);
            struct.setId(id);
            favorite.add(struct);
            allItems.add(struct);

        }
    }


}

 

 

از این کلاس استفاده کنید برای کپی کردن دیتابیس :

DatabaseAssets.java

 

 

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 11 دقیقه قبل، Farzad Sarseifi گفته است :

 

از این کلاس استفاده کنید برای کپی کردن دیتابیس :

DatabaseAssets.java

 

 

 

 

 

تشکر از پاسخ شما 
بنده در حال یادگیری هستم و متاسفانه دقیق نمیدونم چطور باید این کلاس رو داخل برنامم استفاده کنم؟
ایا میشه همین کد اکتیویتی که سورس دیتابیس داخلش استفاده کردم رو ویرایش کنم ؟!!
 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 16 ساعت قبل، esikley گفته است :

تشکر از پاسخ شما 
بنده در حال یادگیری هستم و متاسفانه دقیق نمیدونم چطور باید این کلاس رو داخل برنامم استفاده کنم؟
ایا میشه همین کد اکتیویتی که سورس دیتابیس داخلش استفاده کردم رو ویرایش کنم ؟!!
 

کلاس زیر رو ایجاد کنید و فقط شما باید اسم دیتابیس رو با نام دیتابیس خودتون تغییر دهید متغیر DB_NAME

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

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

public class DatabaseAssets extends SQLiteOpenHelper {
	String DB_PATH = null;
	private static String DB_NAME = "database.db";
	public static final String TABLE_App = "Tbl_Apps";
	// TABLE_CONTENT

	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
	 */
	@SuppressLint("SdCardPath")
	public DatabaseAssets(Context context) {

		super(context, DB_NAME, null, 1);//1 is database  version
		this.myContext = context;
		// DB_PATH = "/data/data/" + context.getPackageName() + "/" +
		// "databases/";
		DB_PATH = "/data/data/" + myContext.getPackageName() + "/" + "databases/";
	}

	/**
	 * Creates a empty database on the system and rewrites it with your own
	 * database.
	 * */
	public void createDataBase() throws IOException {

		boolean dbExist = checkDataBase();

		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(myPath, null,
					SQLiteDatabase.OPEN_READONLY
							| SQLiteDatabase.NO_LOCALIZED_COLLATORS
							| SQLiteDatabase.CREATE_IF_NECESSARY);

		} 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.
	 * */
	public 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;

		// 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(buffer, 0, length);
		}

		// 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(myPath, null,
				SQLiteDatabase.OPEN_READONLY
						| SQLiteDatabase.NO_LOCALIZED_COLLATORS
						| SQLiteDatabase.CREATE_IF_NECESSARY);

	}

	@Override
	public synchronized void close() {

		if (myDataBase != null)
			myDataBase.close();

		super.close();

	}

	@Override
	public void onCreate(SQLiteDatabase db) {

	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

}

برای کپی کردن دیتابیس باید از کلاس DatabaseAssets یک new کنید و متد createDatabase() را صدا بزنید

 

DatabaseAssets db=new DatabaseAssets(getApplicationContext());
db.createDataBase()

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 6 ساعت قبل، Farzad Sarseifi گفته است :

کلاس زیر رو ایجاد کنید و فقط شما باید اسم دیتابیس رو با نام دیتابیس خودتون تغییر دهید متغیر DB_NAME


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

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

public class DatabaseAssets extends SQLiteOpenHelper {
	String DB_PATH = null;
	private static String DB_NAME = "database.db";
	public static final String TABLE_App = "Tbl_Apps";
	// TABLE_CONTENT

	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
	 */
	@SuppressLint("SdCardPath")
	public DatabaseAssets(Context context) {

		super(context, DB_NAME, null, 1);//1 is database  version
		this.myContext = context;
		// DB_PATH = "/data/data/" + context.getPackageName() + "/" +
		// "databases/";
		DB_PATH = "/data/data/" + myContext.getPackageName() + "/" + "databases/";
	}

	/**
	 * Creates a empty database on the system and rewrites it with your own
	 * database.
	 * */
	public void createDataBase() throws IOException {

		boolean dbExist = checkDataBase();

		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(myPath, null,
					SQLiteDatabase.OPEN_READONLY
							| SQLiteDatabase.NO_LOCALIZED_COLLATORS
							| SQLiteDatabase.CREATE_IF_NECESSARY);

		} 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.
	 * */
	public 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;

		// 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(buffer, 0, length);
		}

		// 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(myPath, null,
				SQLiteDatabase.OPEN_READONLY
						| SQLiteDatabase.NO_LOCALIZED_COLLATORS
						| SQLiteDatabase.CREATE_IF_NECESSARY);

	}

	@Override
	public synchronized void close() {

		if (myDataBase != null)
			myDataBase.close();

		super.close();

	}

	@Override
	public void onCreate(SQLiteDatabase db) {

	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

}

برای کپی کردن دیتابیس باید از کلاس DatabaseAssets یک new کنید و متد createDatabase() را صدا بزنید

 


DatabaseAssets db=new DatabaseAssets(getApplicationContext());
db.createDataBase()

 

 

 

سلام تشکر از لطف شما بابت راهنمایی.
عرضم به حضورتون مثل اینکه دیتابیس بدرستی جایگزین دیتابیس قبلی داخل موبایل نمیشد و با راهنمایی دوستان دیتابیس قبلی رو حذف کردم و دیتابیس جدید رو جایگزین کردم که شکر خدا مشکل حل شد 
این گفتم بیام جواب بدم چون ممکنه دوستان به این نکته ریز توجه نداشته باشند و ذهنشون مرتب درگیر باشه سپاس از راهنمایی شما.

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aliazmoodeh
      سلام من یه آپی دارم یه قسمت وجود داره که اطلاعات رو از سرور میگیره و تو ریسایکلرویو نمایش میده من میخوام این اطلاعات رو تو حالت افلاین هم داشته باشم یعنی چی یعنی بتونم اطلاعاتی که از سرور گرفتم قبلا رو وقتی کاربر اینترنت بهش نمایش بدم دقیقن مثله تلگرام میگم ولی نمیدونم باید چیکار کنم اگر اموزشی در این رابط دارید بهم بگید یا سورسی دارید بهم بگید پولی یا رایگان باشه برام فرقی نمیکنه فقط میخوام مشکلمو حل کنه
    • توسط Vahid761
      دوستان سلام . لطفا کمک کنید . راستش من می خواستم یک text view بسازم که وقتی  یک button دستور یک دستور خاصی رو ارسال کنه متن اون text view تغیر کنه که البته تاحدودی هم موفق شدم ولی مشکلی که هست اینه که اون متن جدید   save نمیشه یعنی با یه باز وبسته کردن اپ دورباره برمیگرده به اون متن اولی یعنی می خوام اون متن جدید رو save کنم  دوستان اگه بلدید چطوری حل میشه خواهشا لطفا کمک کنید تا  این مشکل رو حل کنم ....
    • توسط parsdc
      سلام به همه دوستان
      زمانی که سرچ میکنیم در دیتابیس sqlite در لیست نام فارسی، متاسفانه حروف گ چ پ ژ ک بدون ترتیب حروف برمیگردونه، در این مورد تحقیق ها و تست های زیادی کردم، و متوجه شدم کد اسکی این حروف از نظر عددی  نظم ترتیبی ندارد
      لیست حروف فارسی با کد اسکی رو ببینید
      192    ہ
      193    ء
      194    آ
      195    أ
      196    ؤ
      197    إ
      198    ئ
      199    ا
      200    ب
      201    ة
      202    ت
      203    ث
      204    ج
      205    ح
      206    خ
      207    د
      208    ذ
      209    ر
      210    ز
      211    س
      212    ش
      213    ص
      214    ض
      215    ×
      216    ط
      217    ظ
      218    ع
      219    غ
      220    ـ
      221    ف
      222    ق
      223    ك
      224    à
      225    ل
      226    â
      227    م
      228    ن
      229    ه
      230    و
       
      236    ى
      237    ي
       
      129    پ
      141    چ
      142    ژ
      152    ک
      144    گ

      حرف ک عربی 223 هست در جای خودش هست اما ک فارسی 152 هست از عدد حرف آ هم کمتر هست و در سرچ بالاتر از آ قرار میگیره
      سایر حروف مشکل دار هم به همین شکل پ چ ژ ک گ
      کد های utf8 هم بررسی کردم و این مشکل رو داره، واقعا نمیدونم ماکروسافت چیکار کرده که در دیتابیس های اون این مشکل وجود نداره، شما راه حلی اصولی براش نمیشناسید؟
    • توسط Javad Mahmoodi
      سلام
      من میخوام تمام اطلاعات ذخیره شده در برنامه ام را که در sqlite هست رو با زدن دکمه ارسال و بصورت یکجا به دیتابیس sql server ارسال کنم.
      کانکشن رو بین برنامم و sql server  که توسط کتابخانه jdbc هست ایجاد کردم.
      الان مشکلم این هست که چجوری تمام اطلاعات رو مستقیم و فقط با زدن دکمه ارسال به sql server ارسال کنم.
      ممنون میشم راهنمایی فرمایید(ترجیحاً با کد)
    • توسط h.a.m.i.d
      سلام دوستان وقت بخیر ، من دارم یه اپلیکشن آماده می کنم که ارتباط با سرور داره
      داخل هاست من یه یه دیتابیس دارم که اینجا تیبل  users مد نظرم هست، داخل این جدول من چهار ستون دارم که عبارتند از ID,username,pass,date
      date زمان عضوت کاربر به صورت خودکار پر میشه
      حالا سوال اینجاست که من یه بخش پروفایل داخل مین اکتیوتیم دارم که میخوام داخلش تاریخ عضویت کاربر نشون داده بشه، روال به اینصورت هست که داخل اپ یوزنیم و پس رو از شیردپرفرینس میگیره میفرسته به سمت سرور و داخل فایل php اطلاعات دریافت میشه و ستون تاریخ متناظر با اون اطلاعات کاربری دوباره ارسال میشه به سمت اندروید و محتوای تکست ویو مورد نظر رو میسازه ، ولی من تو دریافت اطلاعات از php داخل اپلیکیشن و نوشتن کدها به مشکل خوردم اگه ممکنه برنامه و یا کدهای  php رو برام اصلاح کنید ممنونم.
      برنامه سمت اندروید:
      private void ShowProfile(){ profile = new MaterialDialog.Builder(MainActivity.this) .customView(R.layout.alert_aprofile,false) .show(); AsyncHttpPost post = new AsyncHttpPost( "http://****************profile.php" ); post.setTimeout(5000); MultipartFormDataBody body = new MultipartFormDataBody(); body.addStringPart("Username",sp.getString("Username", null)); body.addStringPart("Pass",sp.getString("Pass", null)); post.setBody(body); AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() { @Override public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) { if (e != null) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { wait.dismiss(); Toast.makeText(MainActivity.this, "no connection", Toast.LENGTH_LONG).show(); e.printStackTrace(); } }); } if (!result.equals("")) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { items.clone(); try { JSONArray jsonArray = new JSONArray(result); for (int i = 0; i < jsonArray.length(); i++) { JSONObject object = jsonArray.getJSONObject(i); HashMap<String, Object> hash_add = new HashMap<String, Object>(); hash_add.put("Date", object.getString("Date")); hash_all.add(hash_add); items = new String[hash_all.size()]; } } catch (Exception e) { e.printStackTrace(); } } }); } } }); کدهای php :
      function get(){ $connection = connectToDatabase(); $Username = $_REQUEST['Username']; $Pass = $_REQUEST['Pass']; if($Username!="" && $Pass!=""){ $result = mysqli_query($connection,"select Date from users where Username='$Username' and Pass='$Pass'"); $array_finish = array(); while($row = mysqli_fetch_array($result)){ $record = array(); $record['Date'] = $row['Date']; $array_finish[] = $record ; } echo json_encode($array_finish); }else { print "null"; } mysqli_close($connection); } می دونم که سمت اندروید برنامه م کامل نیست پس اگه راهی هست راهنماییم کنید کدهای متناسب با این php رو داخل اندروید بنویسم.
      ممنونم
       
  • فایل

×
×
  • اضافه کردن...