آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

خواندن اطلاعات از پایگاه داده (SQLite Database)، در برنامه نویسی اندروید

فرض کنید که با کدهای زیر، قبلا یک پایگاه داده (SQLite Database) با نام KELIDESTAN.db و یک جدول (table) با نام MY_TABLE برای آن پایگاه داده، ساخته ایم و همچنین سه ردیف اطلاعات را در آن ذخیره کرده ایم :


String DATABASE_NAME = "KELIDESTAN.db";  
String TABLE_NAME = "MY_TABLE";    
try{
    SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
    mydb.execSQL("CREATE TABLE IF  NOT EXISTS "+ TABLE_NAME +" (ID INTEGER PRIMARY KEY, NAME TEXT, CITY TEXT);");
    mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('ALIREZA','SHIRAZ')");
    mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('HAMID','TEHRAN')");
    mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('HASAN','GHOM')");
    mydb.close();
}catch(Exception e){
    Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}

اکنون می خواهیم که اطلاعات ذخیره شده در پایگاه داده (SQLite Database) را فراخوانی کنیم و سپس هر مقدار را با استفاده از Toast ، به مدت چند ثانیه، نمایش بدهیم (Toast برای نمایش یک پیام به کاربر و برای چند ثانیه، به کار می رود). برای این منظور، کدهای زیر را می نویسیم :


String DATABASE_NAME = "KELIDESTAN.db";  
String TABLE_NAME = "MY_TABLE";
try{
    SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
    Cursor allrows  = mydb.rawQuery("SELECT * FROM "+  TABLE_NAME, null);
    if(allrows.moveToFirst()){
        do{
            String ID = allrows.getString(0);
            String NAME = allrows.getString(1);
            String CITY = allrows.getString(2);
                   
            // Show values with Toast
            Toast.makeText(getApplicationContext(), ID, Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), NAME, Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), CITY, Toast.LENGTH_LONG).show();
        }
        while(allrows.moveToNext());
    }
    mydb.close();
}catch(Exception e){
    Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}

بنابراین، 9 مقدار مختلف، به صورت پیام های با مدت زمان کوتاه، به کاربر نمایش داده می شود (با استفاده از Toast). این 9 پیام، به ترتیب، برابر مقادیر زیر می باشند :


1
ALIREZA
SHIRAZ
2
HAMID
TEHRAN
3
HASAN
GHOM
نویسنده علیرضا گلمکانی
شماره کلید 330
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 2 2 0
محمدرضا
۱۳۹۵/۰۶/۰۱
۱۴:۰۹

سلام خسته نباشید میخواستم بدونم چطور میتونم که از یک ستون و یک ردیف مشخص اطلاعات رو از دیتابیس بگیرم؟؟؟

sowieso2020
۱۳۹۵/۰۷/۲۵
۰۲:۱۰

سلام و خسته نباشید.
من چند روزه که دارم در مورد دیتابیس sqlite تحقیق می کنم و هنوز جواب ساده ترین مطلب دنیا در مورد دیتابیس رو پیدا نکردم!
سوالم اینه، من می خوام وقتی یک خونه از ستون c و ردیفرو بخونه! همین...
من دیتابیسم رو بوسیله افزونه فایرفاکس ایجاد کردم و اسمش رو n گذاشتم و اسم جدول رو  m گذاشتم. اما اگر بجای


DATABASE_NAME="n" ;  TABLE_NAME = "m";
SQLiteDatabase sampleDB = openOrCreateDatabase(DATABASE_NAME, this.MODE_PRIVATE, null);
  
Cursor allrows = myDB.rawQuery("SELECT c FROM " +
                    TABLE_NAME +
                    " where id=r, null);

int j = allrows


 
بعد از این همه گشتن هنوز نمیدونم بعد ازFROM یا بعد از  WHERE باید ستون رو نوشت یا ردیف رو. چون هر دو جور رو دیدم!  آیا کدم رو درست نوشتم؟ لطفا کد درست رو بنویسید. من یک رکورد از ردیف مشخص رو میخوام، آیا باید if  (c.moveToFirst()) رو بنویسم؟؟
و اینکه برای WHERE   و    MODE_PRIVATE ایراد میگیره.
و اینکه در متد خواندن، اگر بجای DATABASE_NAME و TABLE_NAME، اسمشون یعنی n و m رو بذارم ایراد میگیره.
و اینکه اگر بجای اسم دیتابیس که موقع ساخت ، n  گذاشته بودم و در assets کپی کردم، الان در اینجا اسم دیگه ای بدم ایراد نمیگیره!!!
 
وسوال آخر اینکه در دیتابیس برای ردیف اسمی نذاشتم، آیا باید اینجا KEY_row=id تعریف کنم؟؟
بینهایت ممنون میشم کمکم کنید.




 

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)