esikley

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

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

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

این درحالی هست که من هم دیتابیس و جدول رو ساختم و در پوشه 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()

 

 

 

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

1 کاربر پسند دیده است

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط fahmide
      با سلام
      من توی پروژم یک ExpandableListView دارم و یه دیتابیس توی دیتابیس با استفاده از کد والد ، والد هرکدوم از فرزندان مشخص میشه. مسله اینه که کاربر امکان اضافه کردن والد و فرزند رو توی دیتابیس داره من هرکاری میکنم درست لود نمیشه اگه ممکنه راهنمایی کنین
    • توسط hamidreza.kh
      سلام خسته نباشید چندتا سوال و درخواست داشتم
      دستورات mysql رو کسی دقیقا میتونه بهم بده؟ مثلا سه تا فرگمنت توی یه اکتیوتی دارم ، میخوام یکیش پست هام رو به ترتیب جدیدترین پست ها بگیره از دیتابیس یا حالا سرور ، تب دوم میخوام همون اطلاعات رو بر حسب مثلا تعداد ویو(بیشترین ها) بهم بده و یه فرگمنت دیگه هم میخوام اونایی که مثلا دیده شده رو نمایش بده !  
      برای مثال اول که مشکلی ندارم همه پست هارو میتونم به ترتیب بگیرم اما برای 2 مثال دیگه اللخصوص مثال دوم یکم گیجم ! ممنون میشم راهنمایی کنید
       
      سوال بعدیم هم اینه ، مثلا کافه بازار حالا که من میخوام مثلا 3 تا فرگمنت رو توی یه اکتیویتی بسازم ، و اطلاعات درونش قرار بدم ، باید برای هر فرگمنت یه آداپتر بسازم دیگه؟که دیتا های خاص هرکدوم رو نشون بده !
      اگه این مسئله درست باشه یه اپی مثل اپ کافه بازار تو قسمت برترین ها 3 تا فرگمنت داره توی یک اکتیویتی ، خب؟ بعد این 3 تا یه عالمه آیتم گرفتن ! چرا اپ کرش نمیشه؟ یا اینکه برای کرش شدن اپ این در حد اون قسمت از اپ کافه بازار ، اون دیتا ها خیلی ناچیز اند؟ و کلا اگه مثلا عکس زیاد داشته باشیم برای بهینه سازی اپ توی فرگمنت های یه اکتیویتی چی رو پیشنهاد میکنید؟
      و سوال اخر اینکه از چه نوع ویو پیجری در مثلا همون قسمت برترین های کافه بازار استقاده شده؟!(fragment view pager یا fragment state view pager)؟ و اینکه چه موقه از این و چه موقه از اون استفاده کنیم؟(لطفا با ذکر مثال بفرمایید)
    • توسط مهندس
      سلام دوستان.
      چجوری میتونم ساعت رو در دیتابیس sqlite ذخیره کنم؟؟
      منظورم اینه ک من یکسری داده دارم میخام وقتی ثبت دیتابیس شد، ساعتی ک کاربر داده رو ثبت میکنه هم در یک فیلد ثبت بشه.
      من یه فیلد با نوع TIME در دیتابیس گذاشتم، اما نمیدونم چجوری و با چه توابعی ساعت رو ذخیره کنم؟؟
      در ضمن راهی هست ک ساعت واقعی ثبت بشه؟؟
      یعنی اینکه اگه یه وقت کاربر ساعت گوشیشو تغییر داد، بازم تایم واقعی time zone ایران ثبت بشه ؟؟؟
    • توسط Majid Ebrahimi
      برای اینکار دو روش وجود دارد:
      1- اینکه عکس را در دیتابیس ذخیره وسپس در برنامه نمایش دهیم.
      2-اینکه نام عکس را در دیتابیس ذخیره و خود تصاویر را در پوشه ریسورس برنامه مثلا در drawable ذخیره و سپس با توجه به نام آن تصویر را در ایمیج ویو لود کنیم.
      ما روش دوم را در این اموزش بررسی خواهیم کرد.
      به کد زیر توجه کنید: ImageView img; Database myDbHelper; SQLiteDatabase db; img = (ImageView) findViewById(R.id.imageView1); db = myDbHelper.getWritableDatabase(); String s = getIntent().getStringExtra("id"); Cursor c = db.rawQuery("select * from student where stu_id = " + id, null); if (c.moveToNext()) { img_name = c.getString(c.getColumnIndex("img")); Log.d("img", img_name); String uri = "drawable/" + img_name; // int imageResource = R.drawable.icon; int imageResource = getResources().getIdentifier(uri, null, getPackageName()); Drawable image = getResources().getDrawable(imageResource); img.setImageDrawable(image); } همانطور که مشخص است بعد از زدن یک کوئری در دیتابیس نام تصویر مربوط به دانشجوی مورد نظر را گرفته و سپس id ایمیج مورد نظر را در ریسورس های برنامه به دست آورده و آن را در ایمیج ویو نشان می دهد.
      امیدوارم این آموزش مقبول افتد.
    • توسط b.kordtabar
      با سلام
      می خواهم لیستی از داده ها را در پایگاه داده sqlite اندروید ذخیره کنم داده مربوط به ستون آخر نمایش داده نمی شود
      کد مربوطه را ارسال می کنم، اگر می توانید راهنمایی کنید.
      package com.example.t.newsqlite; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class DatabaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "carManager"; private static final String TABLE_CONTACTS = "cars"; private static final String KEY_ID = "id"; private static final String KEY_BRAND = "brand"; private static final String KEY_WORKED = "worked"; private static final String KEY_MODEL="model"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_BRAND + " TEXT," + KEY_WORKED + " TEXT," + KEY_MODEL + " TEXT " + ")"; db.execSQL(CREATE_CONTACTS_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); onCreate(db); } public void addContact(Car car) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_BRAND, car.getBrand()); values.put(KEY_WORKED, car.getWorked()); values.put(KEY_MODEL, car.getModel()); db.insert(TABLE_CONTACTS, null, values); db.close(); } public Car getContact(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_CONTACTS, new String[]{KEY_ID, KEY_BRAND, KEY_WORKED, KEY_MODEL}, KEY_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null); if (cursor != null) cursor.moveToFirst(); Car car = new Car(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2),cursor.getString(3)); // return contact return car; } public List<Car> getAllContacts() { List<Car> contactList = new ArrayList<Car>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); // looping through all rows and adding to list if (cursor.moveToFirst()) { do { Car car = new Car(); car.setID(Integer.parseInt(cursor.getString(0))); car.setBrand(cursor.getString(1)); car.setWorked(cursor.getString(2)); car.setModel(cursor.getString(3)); // Adding contact to list contactList.add(car); } while (cursor.moveToNext()); } // return contact list return contactList; } public int getContactsCount() { String countQuery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); cursor.close(); // return count return cursor.getCount(); } public int updateContact(Car car) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_BRAND, car.getBrand()); values.put(KEY_WORKED, car.getWorked()); values.put(KEY_MODEL, car.getModel()); // updating row return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", new String[] { String.valueOf(car.getID()) }); } public void deleteContact(Car contact) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_CONTACTS, KEY_ID + " = ?", new String[] { String.valueOf(contact.getID()) }); db.close(); } } package com.example.t.newsqlite; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class AndroidSQLiteTutorialActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DatabaseHandler db = new DatabaseHandler(this); /** * CRUD Operations * */ // Inserting Contacts Log.d("Insert: ", "Inserting .."); db.addContact(new Car("رنو","کارکرده","GGF")); db.addContact(new Car("تویوتا","صفر کیلومتر","FD")); db.addContact(new Car("بیوک", "حواله","GDG")); // Reading all contacts Log.d("Reading: ", "Reading all contacts.."); List<Car> car = db.getAllContacts(); for (Car cn : car) { String log = "Id: " + cn.getID() + " ,Brand: " + cn.getBrand() + " ,Worked: " + cn.getWorked() + " ,Model: " + cn.getModel(); // Writing Contacts to log Log.d("Name: ", log); } } } package com.example.t.newsqlite; public class Car { //private variables int id; String brand; String worked; String model; public Car(){ } public Car(int id, String brand,String worked,String model){ this.id = id; this.brand=brand; this.worked=worked; this.model=model; } // constructor public Car(String brand,String worked,String model){ this.brand=brand; this.worked=worked; this.model=model; } public int getID(){ return this.id; } public void setID(int id){ this.id = id; } // getting name public String getBrand(){ return this.brand; } // setting name public void setBrand(String brand){ this.brand = brand; } // getting phone number public String getWorked(){ return this.worked; } // setting phone number public void setWorked(String worked){ this.worked = worked; } public String getModel(){ return this.model; } public void setModel(String model){ this.model = model; } }  

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل