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

قرار دادن چند سطر در دیتابیس فقط برای یکبار

واتیکان  10 سال پیش  10 سال پیش
0 0

با سلام 

بنده با استفاده از کلاس dbOpenhealper دیتابیس و سطرهای دیتابیس رو میسازم

حالا یک از کلاس بالا در کلاس dbHandler ساختم تا بتونم کوئری های لازم جهت انجام عملیات روی دیتابیس انجام بدم

در حالت عادی کاربر خودش میتونه به دیتابیس سطر اضافه کنه

مشکل من اینه که من میخوام هنگامی که برنامه اجرا میشه چندتا سطر داخل دیتابیس باشه(مثلا اسم 10 تا بانک)

یعنی دیتابیس بطور پیشفرض شامل نام چندتا بانک باشه

ولی هرکاری میکنم نمیشه،لطفا کمک کنید دوستان

 

کدهای کلاس dbOpenhealper:

 package mypackage;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class dbopenhelper extends SQLiteOpenHelper{

    public static final String dbname="database";

    public static final String tbl_add_bank="add_bank";
    public static final String bank_id="id";
    public static final String bank_name="bank_name";
    public static final String createtbl_add_bank="CREATE TABLE "+tbl_add_bank+"("+bank_id+" INTEGER PRIMARY KEY AUTOINCREMENT ,"
            +bank_name+" TEXT);";



    public dbopenhelper(Context context){
        super(context, dbname, null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(createtbl_add_bank);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS"+tbl_add_bank);
        onCreate(db);
    }


}

کدهای کلاس dbHandler:

 package mypackage;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class dbHandler {

    private dbopenhelper dbhelper;
    private SQLiteDatabase database;

    public dbHandler(Context context){
        dbhelper=new dbopenhelper(context);
    }
    public void open(){
        database=dbhelper.getWritableDatabase();
    }
    public void close(){
        dbhelper.close();
    }


    public Integer AccountCount(){
        Cursor cu=database.query(dbhelper.tbl_add_bank, null, null, null, null, null, null);
        int s=cu.getCount();
        return s;
    }
    public String DisplayAccount(int row,int field){
        Cursor cu=database.query(dbhelper.tbl_add_bank, null, null, null, null, null, "id DESC");
        cu.moveToPosition(row);
        String name=cu.getString(field);
        return name;
    }
    public void InsertBank(String bank_name){
        ContentValues cv=new ContentValues();
        cv.put(dbhelper.bank_name, bank_name);
        database.insert(dbhelper.tbl_add_bank, dbhelper.bank_name, cv);
    }
}
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Hajhosseini  10 سال پیش
+1 0

از کتابخانه SqlAssetHelper استفاده کنید.
1: دیتابیس رو زیپ میکنه و حجم بسیار قابل توجهی از دیتابیس کم میشه.
2: به سادگی قابل استفاده و تغییر هست.
3: در تمام ورژن های اندروید به درستی کار میکنه.
4: آپدیت کردن دیتابیس به سادگی و با 1 خط انجام میشه(حتی تغییر در ساختار دیتابیس).

کاری که شما میخواید بکنید به این صورته:
ابتدا دیتابیس رو در برنامه ای مانند navicat بسازید و مقادیر اولیه رو پر کنید.
سپس دیتابیس رو زیپ کنید و در فولدری که در آموزش کار با SqlAssetHelper آمده قرار بدید.
سپس به راحتی ازش استفاده کنید. نمونه query در github و در همین انجمن هم هست.
اگر اشتباه نکنم خودم قبلا یک آموزش استفاده از این کتابخانه رو قرار داده بودم، میتونید از اون تاپیک کمک بگیرید.

0 0
مهندس ممنون میشم یک آموزش در موردش بذارین (10 سال پیش)
+1 0
این آموزش رو قبلا درج کرده بودیم، اگر سوالی در مورد این کتابخانه دارید میتونید زیر همون تاپیک درج کنید.http://answers.uncox.com/android/question/4541/کپی-و-آپدیت-دیتابیس-آموزش-کامل- (10 سال پیش)
+1 0
لینک (10 سال پیش)
پاسخ به سوال 
بهروز  10 سال پیش
+2 0

منظورتون اینه که دیتابیس  در شروع یه مقدارهایی داخلش واسه شروع باشه؟ توی این قسمت مشکل دارید؟
یک متد داخل کلاس dbHandelar تعریف کنید. مثلا به اسم  defuletInsertBank().  
داخل این متد مقدارهایی که میخواید در ابتدا داخلش باشه  با یک حلقه inesrt کنید داخل دیتابیس خودتون.

publicvoiddefualtInsertBank(){
for(int i=0;i<10;i++)
// دستورات اینزرت کردن}

و داخل اکتیویتی اصلی خودتون فرخوانی کنید..اما مشکلی که هست اینه که هربار این اکتیویتی دوباره اجرا بشه
باز متد اجرا میشه و مقادیر تکراری دوباره داخلش اضافه میشه..واسه این کار هم یک متغیر  boolean تعریف کنید. و مقدارش false  قرار بدید. بعد از اولین بار اجرا شدن متد بالا مقدارش true کنید.  بعد یک دستور شرطی بزارید روش بگید اگر مقدارش true  بود دیگه اون متد صدا زده نشه.

 if(defult_insert==false)
db_handelr.defultInsertBank();

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