PDA

View Full Version : دیتابیس آماده ونمایش اطلاعات آن



gilar1360
سه شنبه 21 بهمن 1393, 15:58 عصر
سلام
یه دیتابیس آماده دارم که یک سری اطلاعات شامل 2000 رکورد را واردش کردم حالا می خواهم اطلاعاتش را در یه لیست ویو نمایش بدم اکثرا نمونه کدهای که هم هست خودش داخل برنامه یه دیتابیس می سازه و نمایش می دهه من می خواهم به دیتابیس آماده وصل بشم و نمایش بدهم خواهشا نمونه کدی هست معرفی کنید
با تشکر

the_wise1367
سه شنبه 21 بهمن 1393, 20:48 عصر
سلام
دیتابیس رو بذار تو پوشه assets و کاری کن که در اولین اجرای برنامه روی هر دستگاه به این آدرس کپی شه:
data\data\package-name\databasespackage-name نام پکیج خودتونه
از این متد می تونید استفاده کنید


private void copyDataBase() throws IOException{

String dirPath = "data/data/com.example/databases";
File projDir = new File(dirPath);
if (!projDir.exists())
{
projDir.mkdirs();
}


InputStream myInput = this.getAssets().open("ARKDB.db");
String outFileName = "data/data/com.example/databases/ARKDB.db";
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();


در این متد اول چک میکنه که مسیر وجود داره یا نه اگه نداشت ایجاد می کنه و بعد دیتابیس رو توش کپی می کنه

اگر این متد را در SharedPreference اجرا کنی تنها در اولین بار اجرای برنامه دیتابیس کپی میشه. این جوری:

haredPreferences ARKPreference = PreferenceManager.getDefaultSharedPreferences(this );
boolean isFirstRun = ARKPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
try {
copyDataBase();
} catch (IOException e) {
}
SharedPreferences.Editor editor = ARKPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}

بقیش هم که حله استفاده از Cursor و دیگر هیچ...
امیدوارم کمک کرده باشه

morahimi
چهارشنبه 22 بهمن 1393, 10:43 صبح
ببخشید میشه کامل توضیح بدید چطوری اطلاعات دیتابیس رو تو لیست ویو نشان بدیم

the_wise1367
چهارشنبه 22 بهمن 1393, 14:40 عصر
ببخشید میشه کامل توضیح بدید چطوری اطلاعات دیتابیس رو تو لیست ویو نشان بدیم

بخش بالایی رو که متوجه شدین. حالا برای نشان دادن اطلاعات در لیست ویو ساده ترین روش استفاده از cursor ست. اول داده ها را از دیتابیس میگیره بعد میریزید تو یه آداپتور و بعد آداپتور را به لیست ویو نسبت می دین. این هم کدش:

String DBPath= "data/data/com.example/databases/ARKDB.db;
SQLiteDatabase db = SQLiteDatabase.openDatabase(DBPath, null, SQLiteDatabase.OPEN_READONLY);

String sql_select= "SELECT * FROM myTABLE;

Cursor cursor = db.rawQuery(sql_select, null);

final String[] name= new String[cursor.getCount()];



int i = 0;
if(cursor.moveToFirst()){
do{

name[i] = cursor.getString(0);

i++;
}
while(cursor.moveToNext());
}
cursor.close();
db.close();

myadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, words);
final ListView lv = (ListView) findViewById(R.id.listView1);
lv.setClickable(true);
lv.setTextFilterEnabled(true);
lv.setAdapter(myadapter);


امیدوارم کارتونو راه بندازه
موفق باشید

MDSTmdst
یک شنبه 26 بهمن 1393, 18:31 عصر
اگر این متد را در SharedPreference اجرا کنی تنها در اولین بار اجرای برنامه دیتابیس کپی میشه. این جوری:

haredPreferences ARKPreference = PreferenceManager.getDefaultSharedPreferences(this );
boolean isFirstRun = ARKPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
try {
copyDataBase();
} catch (IOException e) {
}
SharedPreferences.Editor editor = ARKPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}

بقیش هم که حله استفاده از Cursor و دیگر هیچ...
امیدوارم کمک کرده باشه


میشه بگید دقیقا کجا اینو بزاریم؟ ممنون رفیق

the_wise1367
سه شنبه 28 بهمن 1393, 20:32 عصر
میشه بگید دقیقا کجا اینو بزاریم؟ ممنون رفیق

سلام
این رو باید در oncreate() بذارید