View Full Version : استفاده از external sqlite در برنامه
minazare
چهارشنبه 09 مرداد 1392, 15:58 عصر
سلام
من میخوام برای گوشی اندروید ی دیکشنری بسازم.ی دیتابیس اماده دارم.میخوام ازش استفاده کنم.میدونم ک باید توی فولدر assets قرارش بدم ولی دیگه نمیدونم چطوری باید ازش استفاده کنم میشه راهنماییم کنید؟
(درضمن با جاوا کار میکنم و نرم افزار eclipse)
farhadfery
چهارشنبه 09 مرداد 1392, 16:14 عصر
اولین چیزی که شما نیاز دارید جداول اون دیتابیس بر اساس قواعد اندروید باشه. مثلا _id.
بعد یه کلاس دیتابیس هلپر باید بنویسید (با سرچ هم پیدا می کنید.)
Modernidea
پنج شنبه 10 مرداد 1392, 03:00 صبح
سلام
در همین تالار، در مورد استفاده از دیتابیس آماده بحث شده، لطفا جستجو کنید.
موفق باشید.
minazare
پنج شنبه 10 مرداد 1392, 11:00 صبح
دو تا کد پیدا کردم میشه بگید کدومش بهتره؟
public class databaseHandler extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "dictionary";
// Contacts table name
private static final String TABLE_CONTACTS = "dic";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_word = "word";
private static final String KEY_Def = "definition";
public databaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_word + " TEXT,"
+ KEY_Def + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
// Create tables again
onCreate(db);
}
}
یا این یکی
public class MyDBhelper extends SQLiteOpenHelper {
private static String DB_NAME = "dic";
private SQLiteDatabase db;
private final Context context;
private String DB_PATH;
public MyDBhelper(Context context) {
super(context, DB_NAME, null, 1);
this.context = context;
DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";
}
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
} else {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase() {
File dbFile = new File(DB_PATH + DB_NAME);
return dbFile.exists();
}
private void copyDataBase() throws IOException {
InputStream myInput = context.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
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 Cursor getData() {
String myPath = DB_PATH + DB_NAME;
db = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
Cursor c = db.rawQuery("SELECT * FROM master", null);
return c;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
farhadfery
پنج شنبه 10 مرداد 1392, 11:05 صبح
اینجا یه کلاس هست.! این کلاس را باید تغییر بدهید. بهتر بگم دنبال کلاسی باشید که دیتابیس موجود را در برنامه کپی کنه. کلاسی که گذاشتید؛ خودش داره دیتابیس را می سازه.
minazare
شنبه 12 مرداد 1392, 10:55 صبح
ممنون کمک بزرگی کردین..
میشه بگین اگه بخوام ی فیلد از جدول توی دیتا بیسو بردارم باید چ کدی بزنم؟
hamyd_reza
شنبه 12 مرداد 1392, 11:40 صبح
----------
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.