آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال راجب به DBAdapter (بچه ها اینجا هم یه نگاه کنید ممنون )

amir Alu  11 سال پیش  11 سال پیش
+1 0

سلام ممنونم که وقت گذاشتید و سوال من را میخوانید.

من کدی را در زیر قرار میدم که 2 تا جدول داره ولی اطلاعات ستون ها یکی هست ، حالا سوال من اینجاست که اگر ستون ها یکی نباشه واسه متدی مثل insertContact یا deleteCotact ایا نیاز به نوشتن متدی جداست یا نه؟؟ اگر جواب مثب هست چطور؟؟

 public class DBAdapter {
static final String KEY_ROWID = "_id";
static final String KEY_NAME = "name";
static final String KEY_EMAIL = "email";
static final String TAG = "DBAdapter";

static final String DATABASE_NAME = "MyDB";
static final String DATABASE_MAINTABLE = "contacts";
static final String DATABASE_FAVTABLE = "favs";
static final int DATABASE_VERSION = 2;

static final String CREATE_MAINTABLE =
"create table " + DATABASE_MAINTABLE +"("+KEY_ROWID+ " integer primary key autoincrement, "
+ KEY_NAME+ " text not null,"+ KEY_EMAIL+" text not null);";
static final String CREATE_FAVTABALE =
"create table " + DATABASE_FAVTABLE +"("+KEY_ROWID+ " integer primary key autoincrement, "
+ KEY_NAME+ " text not null,"+ KEY_EMAIL+" text not null);";

final Context context;

DatabaseHelper DBHelper;
SQLiteDatabase db;

public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db)
{
try {
db.execSQL(CREATE_MAINTABLE);
db.execSQL(CREATE_FAVTABALE);
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");

db.execSQL("DROP TABLE IF EXISTS "+DATABASE_MAINTABLE);
db.execSQL("DROP TABLE IF EXISTS "+DATABASE_FAVTABLE);
onCreate(db);
}
}

//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}

//---closes the database---
public void close()
{
DBHelper.close();
}

//---insert a contact into the database---
public long insertContact(String name, String email,String tabale)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, name);
initialValues.put(KEY_EMAIL, email);
return db.insert(tabale, null, initialValues);
}

//---deletes a particular contact---
public boolean deleteContact(String mail,String tabale)
{
return db.delete(tabale, KEY_EMAIL + " LIKE '" + mail + "'", null) > 0;
}

//---retrieves all the contacts---
public List<Mokhatab> getAllContacts(String tabale)
{

Cursor cursor = db.query(tabale, new String[] {KEY_ROWID, KEY_NAME,
KEY_EMAIL}, null, null, null, null, null);
List<Mokhatab> mokhatabha = cursorToList(cursor);
return mokhatabha;
}
//in method ro joda gune tarif kardim (ke cursor ro migire va mokhatab ha ro bar migardune)
//chun niaz nabashe dakhele method haye dige in cod ha ro har bar copy konim va faghat sedash bezanim kafi bashe
private List<Mokhatab> cursorToList(Cursor cursor) {
List<Mokhatab> mokhatabha = new ArrayList<Mokhatab>();
if (cursor.getCount() > 0)
{
while (cursor.moveToNext()) {
Mokhatab mokhatab = new Mokhatab();
mokhatab.setId(cursor.getString(0));
mokhatab.setname(cursor.getString(1));
mokhatab.setMail(cursor.getString(2));
mokhatabha.add(mokhatab);
} ;
}
return mokhatabha;
}

//---retrieves a particular contact---
public Cursor getContact(String mail,String tabale) throws SQLException
{
Cursor mCursor =
db.query(true, tabale, new String[] {KEY_ROWID,
KEY_NAME, KEY_EMAIL}, KEY_EMAIL + " LIKE '" + mail + "'", null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}

///search
public List<Mokhatab> findContacts(String name,String tabale) throws SQLException
{
Cursor cursor =
// % ha yani inke mohem nis ghabl ya badesh harchi mikhad bashe
db.query(true, tabale, new String[] {KEY_ROWID,
KEY_NAME, KEY_EMAIL}, KEY_NAME + " LIKE '%" + name + "%'", null,
null, null, null, null);
List<Mokhatab> mokhatabha = cursorToList(cursor);
return mokhatabha;
}





//---updates a contact---
public boolean updateContact(long rowId, String name, String email)
{
ContentValues args = new ContentValues();
args.put(KEY_NAME, name);
args.put(KEY_EMAIL, email);
return db.update(DATABASE_MAINTABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}

}

یه سوال دیگه، داخل این کد دیتابیس کجا ذخیره میشه؟ روی مموری یا روی حافظه داخلی؟؟

+1 0
استاد داخل آموزش ها امدند روی مموری ذخیره کردند ولی من داخل این سمپل هر جا نگاه میکنم جایی نمیبینم که دیتابیس جایی ذخیره بشه (11 سال پیش)
0 0
استاد داخل آموزش ها امدند روی مموری ذخیره کردند ولی من داخل این سمپل هر جا نگاه میکنم جایی نمیبینم که دیتابیس جایی ذخیره بشه (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+1 0

به طور کلی بله نیاز به متد های جداگانه هست ، مگر اینکه یکم خلاقیت به خرج بدید مثلا برای حذف یک رکورد بگید

 deleteRecord(int TableId,int RowId)

برای این جدول رو int گذشتم که با استفاده از ثابت ها در Strings.xml کدتون تمیز تر بشه ، پس برای حذف کاربر و مدیر 20 , 23 ام به این شکل عمل کنید

deleteRecord(R.string.tblUsers,20);
deleteRecord(R.string.tblAdmins,20);

برای درج اطلاعات ، استفاده از یک متد ، یکم اون متد رو پیچیده میکنه ، اما بهـترین راه دادن یک ContentValues  (آرایه ی key ,value یا کلید مقداری ) هست

ContentValues values = new ContentValues();
values.put("Name", "mojtaba");
database.insert(getString(R.string.tblUsers), null, values);

متد پردازشی تون رو هم بهتر هست با sqliteDataBsae.insert بنویسید ، که دقیقا از key , value ها استفاده میکنه

اینم فراخوانی :

 insertData(R.id.tblUsers,values);
0 0
ممنونم مجتبی جون. باید هر دو راه رو یک بار بنویسم و تست کنم ببینم کدوم راحتر هست. این مدلی که شما گفتی رو کامل الان درک نکردم باید حتما یک بار تستش کنم ببینم چجوریاست. حالا در کل بنظرت کدوم راحتره؟ (11 سال پیش)
0 0
مجتبی جان این ثابت ها در Strings.xml جریانشون چیه. من تا حالا همچین چیزی استفاده نکردم. (11 سال پیش)
0 0
همون فایل strings.xml هست که تو پوشه ی values هست ، استاد هم توضیح دادند ، یعنی همه ی متن های برنامه تون یکجا جمع بشن ! (11 سال پیش)
0 0
مجتبی جان داخل این کد دیتابیس کجا ذخیره میشه ؟؟ (11 سال پیش)
0 0
در لینک (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .