صفحه 11 از 12 اولاول ... 9101112 آخرآخر
نمایش نتایج 401 تا 440 از 457

نام تاپیک: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

  1. #401

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام

    دوست عزیز دو تا مشکل توی کدتون هست

    یکی اینکه نوع num رو از جنس text بذارید چون توی insert کردن دارید به صورت text وارد میکنید

    دوم اینکه وقتی میخواین از cursor بخونید باید قبلش بهش بگید که بره سطر اول

    allRows.moveToFirst();

    چیز دیگه ای به چشمم نخورد

  2. #402

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط poorman مشاهده تاپیک
    سلام

    دوست عزیز دو تا مشکل توی کدتون هست

    یکی اینکه نوع num رو از جنس text بذارید چون توی insert کردن دارید به صورت text وارد میکنید

    دوم اینکه وقتی میخواین از cursor بخونید باید قبلش بهش بگید که بره سطر اول

    allRows.moveToFirst();

    چیز دیگه ای به چشمم نخورد

    ممنون از راهنماییتون.ولی یه مشکل دیگه
    هست متاسفانه
    وقتی num رو از جنس text گذاشتم روی خطnum=allrows.getString(2;)خطا میگیره

  3. #403

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    خطا فکر میکنم به دلیل این باشه که جدول قبلی تون پاک نشده و به همین خاطر جدول جدید ایجاد نمیشه

    برای این کار ابتدا برنامه رو از روی شبیه ساز clear data کنید یا اینکه پاکش کنید و دوباره ران کنید، یا با یک کوئری جدول رو drop کنید (جدول پاک میشه)

    خلاصه اول جدول قبلی باید پاک بشه تا جدول جدید با نوع num تکست بتونه ساخته بشه

    چیز دیگه ای به نظرم نمیرسه که دلیل این مشکلتون باشه

  4. #404

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام
    خیلی اموزش خوبیه ولی مثلا برای کسی مثل من که صفره نیاز داره اول با محیط ssqllight اشنا بشه
    الان من میخوام بدونم چجوری میشه تو sql فایل متنی یا عکس ذخیره کنم و بعد اون و توی برنامه نمایش بدم و مثلا بخوام خط به خط تغییر بدم چجوریه
    فرض کنید یه متن خیلی بلندیه!

  5. #405

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط zahra.mf مشاهده تاپیک
    سلام
    خیلی اموزش خوبیه ولی مثلا برای کسی مثل من که صفره نیاز داره اول با محیط ssqllight اشنا بشه
    الان من میخوام بدونم چجوری میشه تو sql فایل متنی یا عکس ذخیره کنم و بعد اون و توی برنامه نمایش بدم و مثلا بخوام خط به خط تغییر بدم چجوریه
    فرض کنید یه متن خیلی بلندیه!
    سلام

    بنده متوجه نشدم دقیقا سوال شما چیه!!!

    برای ذخیره فایل متنی هیچ تفاوتی نداره با ذخیره اسم... فرض کنید یک کتاب دارید، یک جدول براش بسازید با ستون های شماره صفحه و متن صفحه
    متن همون صفحه رو کپی کنید توی هر سطر ( مسلما باید توی این حالت از دیتابیس آماده استفاده کنید )

    برای ذخیره عکس میتونید آیدی عکس رو توی دیتابیس ذخیره کنید و بعد اون رو بخونید ازش
    ذخیره خود عکس به صورت باینری رو دقیق یادم نیست آموزشش رو گذاشتم توی تاپیک یا نه!!!

    در کل توی این تاپیک من مقدمه ای بر دیتابیس گفتم، بقیه کارها به عهده خودتون هست که طبق نیازتون از دیتابیس استفاده کنید

    موفق باشید

  6. #406

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام خسته نباشید
    چه مشکلی داره این کد؟همین که اجراش میکنم رو اندروید ارور میده بسته میشه
    :
    package com.example.newdb;

    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import android.app.Activity;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;


    public class Main extends Activity {

    public static final String DBNAME = "newdata";
    public static final String TBL = "second";
    private EditText main_insert;
    private Button main_btn;

    private SQLiteDatabase Handler;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    main_insert = (EditText) findViewById(R.id.main_insert);
    main_btn = (Button) findViewById(R.id.main_btn);

    Handler = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null);

    Handler.execSQL("CREATE TABLE IF NOT EXISTS "+TBL+" (id INTEGER PRIMARY KEY AUTO_INCREMENT,value TEXT);");
    Handler.close();
    main_btn.setOnClickListener(new OnClickListener() {

    public void onClick(View arg0) {
    Handler = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);

    String value = main_insert.getText().toString();
    Handler.execSQL("insert into "+TBL+"(id,value)values(null,'"+value+"');");
    Handler.close();
    Toast.makeText(getApplicationContext(), "Success",Toast.LENGTH_LONG).show();
    }
    });
    }



    }


  7. #407

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام

    دوست عزیز فکر میکنم خطا وقتی رخ میده که روی دکمه کلیک میکنید، درسته؟

    به این خاطر هست که id رو دارید null میذارید
    وقتی آیدی primary key هست خودش اتومات مقداردهی میشه و یکی یکی میره بالا، کلا نباید مقدار بدین بهش

    Handler.execSQL("insert into "+TBL+"(value)values('"+value+"');");

  8. #408

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نه همین که برنامه رو اجرا میکنم بسته میشه

  9. #409

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    فکر میکنم با execSql مشکل داره چون
            Handler.execSQL("CREATE TABLE IF NOT EXISTS "+TBL+" (id INTEGER PRIMARY KEY AUTO_INCREMENT,value TEXT);");

    رو که پاک میکنم اجرا میشه باز رو افزودن کلیک میکنم ارور میده بسته میشه چون توی اون Onclick افزودن هم این دستور استفاده شده

  10. #410

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط sourceweb مشاهده تاپیک
    فکر میکنم با execSql مشکل داره چون
            Handler.execSQL("CREATE TABLE IF NOT EXISTS "+TBL+" (id INTEGER PRIMARY KEY AUTO_INCREMENT,value TEXT);");

    رو که پاک میکنم اجرا میشه باز رو افزودن کلیک میکنم ارور میده بسته میشه چون توی اون Onclick افزودن هم این دستور استفاده شده
    قسمت auto increment رو پاک کنید ببینید درست میشه

    Handler.execSQL("CREATE TABLE IF NOT EXISTS "+TBL+" (id INTEGER PRIMARY KEY, value TEXT);");


    درصورتی که درست نشد خطایی که توی log cat میاد رو کپی کنید تا بتونم بفهمم داره به چی گیر میده

  11. #411

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    مشکلش حل شد
    ---------------------
    تاپیک یا آموزشی موجود نیست مبنی بر کار با فایل ها در اندروید؟

  12. #412

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    ا سلام خدمت دوستان خوبم...
    من میخوام نرم افزارم شامل یه لیست اصلی باشه که هر آیتم از لیست یه عکس مربوطه رو لود کنه...
    توی دیتابیسم یه فیلد به نام picture ساختم که اسم مربوط به هر لیست رو بهش دادم،حالا مطالب و عکس های لیست اصلی درست کار میکنه ولی یکی از آیتم ها که باز میکنم و لیست زیر شاخه باز میشه، مطالب درست کار میکنه ولی عکس منوی دوم با منوی اول یکی و همون عکس ها رو بارگیری میکنه...
    لطفا کمک کنین چی کار کنم...
    عکسها رو تو کروم پوشه بریزم؟
    پیشاپیش ممنون


  13. #413

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام دوباره...
    ممنون میشن جواب بدین جناب poor man عزیز

  14. #414

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    با سلام

    دوست عزیز لطفا در این تاپیک فقط و فقط سوالاتی که مستقیما با دیتابیس ارتباط دارند رو مطرح کنید.

    برای سایر سوالات خودتون ابتدا به خوبی جستجو کنید، در صورت پیدا نکردن جوابتون تاپیک بزنید.

    متشکرم

  15. #415

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    بابت آموزش خوبتون واقعا ممنون
    با روشی که شما آموزش دادید من دیتا بیس رو ساختم اطلاعات رو واردش کردم و تویtoastهم نمایش دادم
    ولی من یه مشکلی دارم اون هم نمایش اطلاعات از دیتابیس در لیست ویو هست.اگه ممکنه یه راهنمایی بکنید.
    لینک تاپیکمhttps://barnamenevis.org/showthread.p...50#post2207750
    آخرین ویرایش به وسیله kavakeb : شنبه 12 اردیبهشت 1394 در 21:07 عصر

  16. #416

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

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

    من از یه روش دیگه هم امتحان کردم ولی پوشه دیتابیسم نیست حافظه داخلی وخارجی رو میگردم پیداش نمیکنم اینم کد روش قبلیم

    public final String path="data/data/com.example.s06_project01/databases/";
    public final String Name="database";
    public SQLiteDatabase mydb;

    private final Context mycontext;


    public database(Context context) {
    super(context, "database", null, 1);
    mycontext=context;

    }


    @Override
    public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub

    }
    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

    }


    public void useable(){

    boolean checkdb=checkdb();

    if(checkdb){

    }else{

    this.getReadableDatabase();

    try{
    copydatabase();
    }catch(IOException e){
    }

    }



    }

    public void open(){

    mydb=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READWRITE);

    }

    public void close(){
    mydb.close();
    }

    public boolean checkdb(){

    SQLiteDatabase db=null;
    try{
    db=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READONLY);
    }
    catch(SQLException e)
    {

    }
    //mydb.close();
    return db !=null ? true:false ;

    }

    public void copydatabase() throws IOException{
    OutputStream myOutput = new FileOutputStream(path+Name);
    byte[] buffer = new byte[1024];
    int length;
    InputStream myInput = mycontext.getAssets().open(Name);
    while ((length = myInput.read(buffer)) > 0) {
    myOutput.write(buffer, 0, length);
    }
    myInput.close();
    myOutput.flush();
    myOutput.close();
    }
    ممنون میشم کمکم کنید

  17. #417

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام این خطا میدونید برای چیه؟

    Capture111.PNG

  18. #418

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام دوستان

    من میخوام یک پروژه اندروید(بانک پیامک)درست کنم
    مشکل اینکه چطور میتونم اطلاعاتی رو در بانک بریزم و این اطلاعات را در یک listview نمایش بدم.خواشا اگ برنامه اماده دارین بهم نشون بدین.ممنون میشم...

  19. #419

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    با سلام خدمت دوست عزیز ، ممنون از آموزشی که قرار دادین .
    چندتا سوال داشتم و قبل از پرسیدن سوالات عرض کنم خدمتتون که بسیار مبتدی هستم .
    فرمت sql من sqlite. هستش و من برای تبدیلش به db. از پشتیبانگیری استفاده کردم ، اشکالی ایجاد نمیشه؟؟
    سوال بعدی اینکه دیتابیس من 10 تیبل داره که تو برنامه براش 10 تا دکمه تعریف کردم تا برای دکمه یه قسمت از دیتابیس رو نمایش بده ، برای اجرای تک تک تیبل ها باید چه کار کنم؟؟
    برای وصل شدن به دیتابیس لازم هستش حتما از لیست ویو یا گرید ویو استفاده کرد؟؟

  20. #420

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط shahang مشاهده تاپیک
    با سلام خدمت دوست عزیز ، ممنون از آموزشی که قرار دادین .
    چندتا سوال داشتم و قبل از پرسیدن سوالات عرض کنم خدمتتون که بسیار مبتدی هستم .
    فرمت sql من sqlite. هستش و من برای تبدیلش به db. از پشتیبانگیری استفاده کردم ، اشکالی ایجاد نمیشه؟؟
    سوال بعدی اینکه دیتابیس من 10 تیبل داره که تو برنامه براش 10 تا دکمه تعریف کردم تا برای دکمه یه قسمت از دیتابیس رو نمایش بده ، برای اجرای تک تک تیبل ها باید چه کار کنم؟؟
    برای وصل شدن به دیتابیس لازم هستش حتما از لیست ویو یا گرید ویو استفاده کرد؟؟
    سلام

    اگر از نرم افزاری که معرفی کردم استفاده کنید مشکلی با فرمت نخواهید داشت. فرمت هم بحث مهمی نیست، خودتون دستی به db تغییرش بدید

    برای نمایش تک تک تیبل ها باید به طور مجزا ازشون بخونید
    استفاده از لیست ویو و گرید ویو فقط برای نمایش اطلاعات هست، در صورتی که نیازی نداشته باشید یا نحوه نمایشتون متفاوت باشه، لیست ویو و گرید ویو لازم نیست.

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

  21. #421

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط poorman مشاهده تاپیک
    سلام

    اگر از نرم افزاری که معرفی کردم استفاده کنید مشکلی با فرمت نخواهید داشت. فرمت هم بحث مهمی نیست، خودتون دستی به db تغییرش بدید

    برای نمایش تک تک تیبل ها باید به طور مجزا ازشون بخونید
    استفاده از لیست ویو و گرید ویو فقط برای نمایش اطلاعات هست، در صورتی که نیازی نداشته باشید یا نحوه نمایشتون متفاوت باشه، لیست ویو و گرید ویو لازم نیست.

    از اونجایی که میگین تازه شروع کردید، پیشنهادم اینه که با مثال های ساده کار رو شروع کنید
    ممنون از پاسخ سریعتون ...
    چجوری باید این کارو کنم؟؟
    برای هر دکمه به صورت تک تک فایل class , xml باید بسازم ؟؟ البته این کارو کردم .
    چه کدی رو باید وارد کنم تو قسمت کلاس تا از دیتا بیس بخونه؟؟
    کلاس دیتا بیس هم که اول آموزش فرمودین ساختم .
    بازم عذر خواهی میکنم سطح سوالاتم پایین هستش .

  22. #422
    کاربر تازه وارد آواتار Mohadi
    تاریخ عضویت
    تیر 1394
    محل زندگی
    Karaj
    پست
    41

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    کار با خود DbHelper هم خیلی ساده هست.
    بذارید یک توضیح مختصری بدم اگر سوالی داشتید بپرسید.

    توی یک فایل جاوای جداگانه یک کلاس با اسم دلخواه میسازیم (که معمولا اسمش رو DbHelper میذارن و از کلاس SQLiteOpenHelper ارث میبره) ابتدا یک سری مقادیر دیتابیسمون مثل نام دیتابیس , ورژنش و نام جدول و ستون هاش رو تعریف میکنیم.

    مثلا :


    public class DbHelper extends SQLiteOpenHelper
    {
    public static final String DB_NAME = "test.db";
    public static final String DB_VERSION = 1;
    publiuc static final String T1 = "T1";

    یک تابع سازنده هم برای DbHelper میسازیم که نشون میده اسم دیتابیس و ورژنش رو استفاده میکنه.


    public void DbHelper(Context con)
    {
    super(con, DB_NAME, null , DB_VERSION);
    }

    حالا تابع onCreate() این کلاس رو فراخوانی میکنیم و ابتدا یک استرینگ میسازیم و مقدارش رو با تابع String.Format() شکل کلی جدولمون رو در پارامتر اول و مقادری هر کدوم از متغیر هارو توی پارامتر های بعدی میذاریم و درنهایت این رشته ساخته شده رو با استفاده از یک آبجکت از کلاس SQLiteDatabase به تابع excuSQL برای اجرا میفرستیم.

    به فرض جدولی با اسم T1 داریم که بجز کلید اصلی id اش دو ستون NAME و Age رو داره (که این دو ستون رو توی همون قبل فرخوانی oncreate مثل نام دیتابیس و ورژنش و نام جدول تعریف کردیم.)
    همون طور که در کد زیر میبینید در پارامتر اول که مربوط به شکل کلی جدول هست هرجا مقدار داریم نوعش و بعد %s میگذاریم و در پارامتر های بعدی به ترتیب بجای هرکدام از %s ها پارامتر وارد شده قرار میگیرد.


    public void onCreate(SQLiteDatebase db)
    {
    String str = String.format("create tabel %s (%s int primary key, %s text , %s text" ,
    T1,
    NAME,
    AGE);

    md.excuSQL(str);

    و قسمت شیرین ماجرا وقتی که میخوایم توی یک کلاسی از برنامه امون از اطلاعاتی رو داخل دیتابیسی که ساختیم بریزیم.

    به فرض یک دکمه ای داریم که اگر اون رو زدیم میخوایم دو مقداری که در دو تا ادیت تکست که کاربر داخلش وارد کرده ارو بگیره و به ترتیب داخل یک سطر از جدول T1 داخل ستون های NAME و AGE اش بریزه و یک آی دی اختصاصی هم بهشون میده.
    داخل onCreate کلاس مورد نظر یک آبجکت از کلاس DbHelper و یک آبجکت از کلاس SQLiteDatebase میسازیم و نوع آبجکت دیتابیس DbHelper رو رایتبل میکنیم که بنویسه داخل جدول.
    (دیگه کد اینارو نمینویسم چون واضحه اما خواستید بگید راهنماییتون کنم باز.)

    بعدش setOnClickListener میکنیم برای دکمه امون که دیگه اینجا نمینویسم داخل اورواید آنکلیک اش ابتدا یک مقدار ContentValue باید تعریف کنیم که در ادامه مقدایر گرفته شده از ادیت تکستهامون رو داخل او بریزیم و در نهایت اون کانتنت ولیو رو بریزیم داخل جدول دیتابیسمون.


    ContentValue v = new ContentValue();
    v.put(Name, edtText1.getText.toString());
    v.put(Age, edtText2.getText.toString());

    حالا اون آبجکت SQLiteDatabase که ساخته بودیم و بالا گفتم رو ازش برای insert کردن داخل جدول دیتابیست استفاده میکنیم.

    چون میخوام کدش رو بنویسم فرض میکنیم اسم این آبجکت رو گذاشته بودیم db

    db.insert(T1 , null , v);

    آخرین ویرایش به وسیله Mohadi : یک شنبه 07 تیر 1394 در 11:29 صبح

  23. #423

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام
    من تازه یک گوشی lg g2 d800 خریدم که در اشتراک گذاری اینترنت مشکل داره و فعال تمیشه و نتونستم آموزشی برای درست کردن این مشکل پیدا کنم. اما با کلی جست و جو در سایت های خارجی آموزش حل این مشکل رو پیدا کردم که با نرم افزار sqlite editor مقدار فایل tether رو در بخش settinge.db رو باید -1 کنم اما وقتی که وارد settinge.db می شوم خطا میده که این دیتابیس قفل هست.
    ممنون میشم که من را راهنمایی کنید که چطور قفل این دیتا بیس رو باز کنم.
    در ضمن گوشی روت شده مشکل از روت شدن گوشی نیست.
    با تشکر
    آخرین ویرایش به وسیله ali.sk : سه شنبه 09 تیر 1394 در 10:15 صبح

  24. #424

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام میشه کد کامل کلاس دیتابیس رو بزارید آخه من نمی فهمم که مثلا کلاس باید از چی ارث بری کنه

  25. #425

    نقل قول: آموزش : کار با دیتابیس SQLite، ساختن و استفاده از دیتابیس آماده

    نقل قول نوشته شده توسط poorman مشاهده تاپیک
    حالا میخوایم اطلاعات رو از جدول بخونیم
    برای این کار از یک شیء Cursor استفاده میکنیم که اطلاعات جدول رو داخل خودش نگه میداره
    ابتدا باید قسمت های مورد نیاز از جدول رو داخل Cursor بریزیم

    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
    Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE, null);


    ما تو این کد با * تمام ستون های جدول رو به ترتیب داخل cursor ریختیم
    در صورت نیاز میتونید فقط چند ستون رو انتخاب کنید تا کارتون راحت تر باشه
    و میتونید ردیف هایی رو انتخاب کنید که یک شرط خاص رو داشته باشند ( مثلا دانشجویان با معدل بالای 16 )
    اینا رو اگر نمیدونید یا برید دنبالش بگردید ، یا بپرسید براتون مثال بزنم ، چون به SQL ربط داره نه اندروید
    خوب چطری باید این کارو کرد؟

  26. #426

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    من میخوام یه جا دیتابیس رو آپدیت کنم ولی نمیدونم چطور اونو معرفی کنم؟
    با این کد ارور میده
         final SQLiteDatabase db = openOrCreateDatabase(Database, Context.MODE_PRIVATE,null);

  27. #427

    نقل قول: آموزش : کار با دیتابیس SQLite، ساختن و استفاده از دیتابیس آماده

    نقل قول نوشته شده توسط poorman مشاهده تاپیک
    سلام

    توی این پست ابتدا ساخت دستی دیتابیس و سپس کار با دیتابیس رو یاد میگیرید

    درصورتی که میخواین با دیتابیس آماده کار کنین این پست رو مشاهده کنین

    -----------------------------------------------------------------------------------------------------------------------

    واقعیت اینه که من از همون اول نتونستم با پیچیدگی کلاس DataBaseHelper ارتباط خوبی برقرار کنم ، به همین خاطر خیلی ساده و ابتدایی میخوام کار با دیتابیس رو بدون پیچیدگی آموزش بدم
    باشد که خدا از ما راضی باشد

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

    SQLiteDatabase mydb;

    بعد نام دیتابیسی که میخوایم ایجاد کنیم یا ازش استفاده کنیم

    private static String DBNAME = "PERSONS";    // THIS IS THE SQLITE DATABASE FILE NAME.


    بعد نام جدول یا جدول های دیتابیس رو برای استفاده تعریف میکنید ، اگر با مفهوم جدول آشنا نیستید باید بگم بخشی از دیتابیس هست که شما می تونید اطلاعات مربوط به یک موضوع یا اصطلاحا موجودیت خاص رو ذخیره کنید

    private static String TABLE = "MY_TABLE";       // THIS IS THE TABLE NAME


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

    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);


    ----------------------------------------------------------------------------------------

    ساخت جدول در دیتابیس

    خب حالا دیتابیس ما برای استفاده آماده ست ، الان نیاز به یک جدول با مشخصات مورد نظرمون برای ثبت اطلاعات داریم ( دیتابیس میتونه دارای چندین جدول باشه ، و هر جدول میتونه به ازای هر مشخصه یک ستون داشته باشه که باید نوع اون رو تعریف کنیم )
    مثلا اگر شما میخواین اطلاعات یک دانش آموز رو ذخیره کنین ، ممکنه به این ترتیب جدول رو بسازید
    ستون شماره دانش آموزی ، ستون نام ، نام خانوادگی ، معدل
    هر جدول باید یک ستون داشته باشه که مقدار اون تکراری نباشه (primary key) ، اگر همچین مشخصه ای نداشتین میتونین یک ستون به اسم ID بسازید و بذارید که خود sqlite اون رو مقدار بده

    mydb.execSQL("CREATE TABLE IF  NOT EXISTS "+ TABLE +" (ID INTEGER PRIMARY KEY, NAME TEXT, PLACE TEXT);");


    خب جدول ما درصورتی که وجود نداشته باشه ساخته میشه ( دقت کنید اول اسم ستون ، بعد نوع محتویات ستون مثلا AGE INTEGER )

    اگر کارتون با دیتابیس تموم شد حتما اون رو با کد زیر ببندید

    mydb.close();


    -----------------------------------------------------------------------------------------------

    وارد کردن اطلاعات در جدول ( از طریق کد )

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

    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
    mydb.execSQL("INSERT INTO " + TABLE + "(NAME, PLACE) VALUES('یک دو سه','امتحان')");
    mydb.close();


    اینجا ما دو تا ستون NAME و PLACE رو مقدار دادیم ، و همونطور که دقت میکنید ID رو مقدار ندادیم تا خود Sqlite مقدار اون رو از یک هر دفعه اضافه کنه به صورت اتوماتیک ( اگر مقدار ستون primary key تکراری باشه خطا میگیرید )

    کار با دستورات UPDATE و DELETE رو توی این پست میتونید مشاهده کنید

    -------------------------------------------------------------------------------------------------------------------

    خواندن اطلاعات از دیتابیس

    حالا میخوایم اطلاعات رو از جدول بخونیم
    برای این کار از یک شیء Cursor استفاده میکنیم که اطلاعات جدول رو داخل خودش نگه میداره
    ابتدا باید قسمت های مورد نیاز از جدول رو داخل Cursor بریزیم

    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
    Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE, null);


    ما تو این کد با * تمام ستون های جدول رو به ترتیب داخل cursor ریختیم
    در صورت نیاز میتونید فقط چند ستون رو انتخاب کنید تا کارتون راحت تر باشه
    و میتونید ردیف هایی رو انتخاب کنید که یک شرط خاص رو داشته باشند ( مثلا دانشجویان با معدل بالای 16 )
    اینا رو اگر نمیدونید یا برید دنبالش بگردید ، یا بپرسید براتون مثال بزنم ، چون به SQL ربط داره نه اندروید

    خب حالا اطلاعات بدست اومده توی Cursor رو میشه به این ترتیب از اول تا آخر استفاده کرد
    مثلا ما این اطلاعات رو داخل آرایه میذاریم، یا میشه اطلاعات رو توی textView نمایش داد ( این دست خود شماست )

    فقط حواستون باشه اگر از آرایه استفاده کردید قبلش آرایه رو بر اساس تعداد سطرهای cursor دوباره سازی کنید، مثل کد زیر

    NAME = new String[allrows.getCount()];


    و ریختن اطلاعات توی آرایه :


    int i = 0;
    if(allrows.moveToFirst()){
    do{
    ID[i] = allrows.getInt(0);
    NAME[i] = allrows.getString(1);
    PLACE[i] = allrows.getString(2);
    i++;
    }
    while(allrows.moveToNext());
    }
    allrows.close();
    mydb.close();


    بعد از خوندن اطلاعات از cursor هم باید حتما اون رو مثل دیتابیس بندید

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

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


    برای کار با دیتایبس در اندروید، می تونین از ویدئوی اموزشی رایگان در لینک زیر استفاده کنید

    لینک آموزش کار با دیتابیس در اندروید


    کد آکادمي
    آموزش برنامه نويسي اندرويد با جاوا و سي شارپ

    code-academy.ir

  28. #428

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    درود
    من کد اول یعنی متصل شدن بوسیله ساخت دیتا بیس داخلی رو انجام دادم و توی امیلتور خود sdk جواب گرفتم
    ولی وقتی برنامه رو از امیلتور YouWave اجرا یا از پوشه bin کپی و ارسال می کنم به گوشی خودم که اندروید 4.1 هست اون اکتیویتی که دیتا بیس داره جواب نمی ده و بیرون میاد به نظرتون مشکل از کجاست
    مرسی.

  29. #429

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    چطور میشه از این کلاس تو android studio استفاده کرد

  30. #430

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام من تو یه برنامه کتاب از دیتابیس و کتابخانه sqlite assets helper استفاده کردم
    همه کاراشم با کمک پست خوب شما انجام دادم ولی برای جستجو به مشکل برخوردم
    من قصد داشتم وقتی کاربر یه کلمه ای رو سرچ میکنه هم در فیلد عنوان و هم در فیلد متن اصلی سرچ بشه
    و در لیست ویو نمایش داده بشه
    اما وقتی کوئریش رو مینویسم
    جواب نمیده
    SELECT * FROM omomi WHERE _title LIKE "'txt'"

    یا
    SELECT * FROM omomi WHERE _title LIKE%txt%

    نمیدونم باید چیکار کنم ؟

  31. #431
    کاربر دائمی آواتار saeed_g21
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    تبریز
    پست
    1,078

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط mohamad73 مشاهده تاپیک
    سلام من تو یه برنامه کتاب از دیتابیس و کتابخانه sqlite assets helper استفاده کردم
    همه کاراشم با کمک پست خوب شما انجام دادم ولی برای جستجو به مشکل برخوردم
    من قصد داشتم وقتی کاربر یه کلمه ای رو سرچ میکنه هم در فیلد عنوان و هم در فیلد متن اصلی سرچ بشه
    و در لیست ویو نمایش داده بشه
    اما وقتی کوئریش رو مینویسم
    جواب نمیده
    SELECT * FROM omomi WHERE _title LIKE "'txt'"

    یا
    SELECT * FROM omomi WHERE _title LIKE%txt%

    نمیدونم باید چیکار کنم ؟
    Query خود را بصورت زیر تعریف نمایید
    SELECT * FROM omomi WHERE _title LIKE '%"+txt+"%'

  32. #432

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام دوستان-فیلم کار با دیتابیس رو دیدم ولی مشکلی که دارم و هنوز برطرف نشده چطور میتونم توی دیتابیس یک فایل متنی که عکس هم لابلای اموزشاش هست جوری بذارم که عکساش نمایش داده بشه؟ من هم اسم متن رو با فرمت png گذاشتم توی فایل apk عکس رو نشون نداد -یکبار هم متن با عکس رو کپی کردم توی دیتابیس باز هم عکسا رو نشون نداد-چیکار کنم که عکسهایی که لابلای متون هست نمایش بده؟ و اینکه چطور یک فایل پی دی اف رو با همون فرمت پی دی اف وارد دیتابیس کنم؟ اگر سولام مقدماتی بود ببخشید چون تازه با این مورد اشنا شدم-متشکرم

  33. #433

    نقل قول: آموزش : کار با دیتابیس SQLite، ساختن و استفاده از دیتابیس آماده

    سلام
    من یه دیتابیس درست کردم گذاشتمش تویه پوشه assets وقتی تعداد مطالب تویه دیتابیسم کمه خیلی راحت اپلیکیشن اجرا میشه ولی وقتی تعداد مطالب دیتابیسم زیاد میشه نرم افزار فورس کلوز میشه،راه حلی به ذهنتون میرسه؟
    تا اونجایی که من تو اینترنت سرچ کردم انگار دلیلش اینه که حجم دیتابیس موجود در پوشه assets اگر بیشتر از 1mb باشه این اتفاق میافته
    لطفا راهنماییم کنین
    ممنون

  34. #434

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام
    آیا پی دی اف آموزش هم در صفحات هست؟
    اگه هست بگید کدوم صفحه، چون آموزشها در صفحه اول بهم ریخته هست و منسجم نیست.

  35. #435

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام دوستان من یک دیتابیس sqlite لوکال دارم با پسوند db تو پوشه asset ذخیره شده اگه بخوام این دیتابیس به طور کلی از سرور آپدیت بشه باید چیکار کنم یعنی کل دیتابیس از سرور دانلود بشه و جایگزین دیتابیس قدیمی بشه تو برنامه!

  36. #436
    کاربر دائمی آواتار saeidpsl
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مریخ
    سن
    33
    پست
    791

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط saeedsfm مشاهده تاپیک
    سلام دوستان من یک دیتابیس sqlite لوکال دارم با پسوند db تو پوشه asset ذخیره شده اگه بخوام این دیتابیس به طور کلی از سرور آپدیت بشه باید چیکار کنم یعنی کل دیتابیس از سرور دانلود بشه و جایگزین دیتابیس قدیمی بشه تو برنامه!
    اینو ببین ......

  37. #437

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    نقل قول نوشته شده توسط saeidpsl مشاهده تاپیک
    اینو ببین ......
    میشه خودتون بیشتر توضیح بدید کدهای همین قسمت رو!

  38. #438

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام . چظور میشه از دیتابیس در android studio استفاده کرد؟؟

  39. #439
    کاربر تازه وارد آواتار rezano
    تاریخ عضویت
    اردیبهشت 1388
    پست
    52

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    با سلام
    چطور میتونم یه آرایه از بایت ها رو توی دیتابیس ذخیره کنم؟
    نوع ستون رو توی دیتابیس برابر BLOB قرار دادم و از این کد استفاده کردم:

    mydb.execSQL("Update " + _tableName + " Set " + _columnName + " = " + _byteArray + " Where ID = " + _id);


    ولی ظاهرا توی کد بالا مقدار byteArray_ رو به String تبدیل می کنه. (البته این کد برای مقادیر دیکه مثل String و int و ... به درستی کار میکنه.)

    توی اینترنت که سرچ کردم راه حل استفده ار PreparedStatement بود. مثل کد زیر:


    String sqlQuery = "INSERT INTO testtable(stringcolumn, blobcolumn) VALUES(?,?)";
    String testString = "hello world";
    byte[] testBytes = "this is a test".getBytes();
    int rowsaffected = 0;

    PreparedStatement statement = connection.prepareStatement(sqlQuery);

    statement.setString(1,testString);
    statement.setBinaryStream(2,new ByteArrayInputStream(testBytes),testBytes.length);
    rowsaffected = statement.executeUpdate();


    ولی توی کد بالا از connection ی که قبلا ساخته شده استفاده کرده.
    وقتی از SQLiteAssetHelper استفاده میکنیم چطوری میشه این قضیه پیاده سازی میشه؟

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

  40. #440

    نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper

    سلام خسته نباشید

    من یه سوال راجع به متصل کردن SQlite به اندروید استودیو دارم...اگه کمکم کنید ممنون میشم

    کدها بصورت زیر هست و زمانیکه دکمه کلیک میشه به تابع namayesh() که میرسه از برنامه خارج میشه....
    من خودم فک میکنم که نمیتونه از دیتابیس خارجی بخونه ولی نمیدونم باید چکار کنم...
    main:
      @Override    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_app);
    db= new Database(this);
    db.usable();
    Button btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    db.open();
    String str=db.namayesh(0,1,"contents");
    Toast.makeText( BookApp.this,str,Toast.LENGTH_SHORT).show();
    db.close();
    }
    });


    }


    کلاسDatabase

    public class Database extends SQLiteOpenHelper {

    public final String path="data/data/com.example.pc1.book/data";
    public final String Name="database";
    public SQLiteDatabase mydb;
    public final Context mycontext;


    public Database(Context context) {
    super(context,"databases",null,1);
    mycontext = context;
    }


    public void usable(){
    if(checkdb()){


    }else{
    this.getReadableDatabase();
    try{
    copydatabase();
    }catch(IOException e){


    }
    }
    }


    public void open(){
    mydb= openDatabase(path + Name, null, OPEN_READWRITE);




    // mydb=openOrCreateDatabase(path+Name, null, null);
    // mydb.execSQL("CREATE TABLE IF NOT EXISTS "+TB_USERS +" (ID INTEGER PRIMARY KEY, NAME TEXT, CITY TEXT);");
    }
    @Override
    public void close(){
    mydb.close();
    }


    public boolean checkdb(){
    SQLiteDatabase db = null;
    try{
    db= openDatabase(path + Name, null, OPEN_READONLY);
    }catch(Exception e){


    }
    return db != null ? true : false;
    }


    public void copydatabase() throws IOException{
    OutputStream myOutput= new FileOutputStream("/data/data/com.example.pc1.book/databases/mydb.sqlite");
    byte[] buffer = new byte[1024];
    int lenght;
    InputStream myInput = mycontext.getAssets().open(Name);
    while((lenght=myInput.read(buffer))>0){
    myOutput.write(buffer,0,lenght);
    }
    myInput.close();
    myOutput.flush();
    myOutput.close();
    }




    public String namayesh(int row,int field,String table){


    Cursor allrows = mydb.rawQuery("select * from " + table,null);
    allrows.moveToPosition(row);
    return allrows.getString(field);
    }

صفحه 11 از 12 اولاول ... 9101112 آخرآخر

تاپیک های مشابه

  1. آموزش کار با دیتابیس در C#‎‎
    نوشته شده توسط mohammadsalehi1385 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 4
    آخرین پست: چهارشنبه 09 دی 1394, 14:35 عصر
  2. آموزش: آموزش نصب qt در ویندوز به زبان ساده
    نوشته شده توسط chikar در بخش برنامه نویسی در محیط QT و هم خانواده هایش
    پاسخ: 0
    آخرین پست: دوشنبه 25 آذر 1392, 23:26 عصر
  3. آموزش مقدماتی تا پیشرفته PHP با زبان ساده
    نوشته شده توسط ehsannasri251 در بخش PHP
    پاسخ: 8
    آخرین پست: یک شنبه 03 آذر 1392, 10:55 صبح
  4. سوال: مشکل در کار با دیتابیس sqlite در سیستم دیگر
    نوشته شده توسط kingtak در بخش C#‎‎
    پاسخ: 9
    آخرین پست: دوشنبه 30 بهمن 1391, 13:29 عصر
  5. سوال: درخواست آموزش کامل کار با دیتابیس در vb.net
    نوشته شده توسط maminb در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 17 دی 1388, 20:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •