رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

کوئری برای ارتباط بین جداول در اندروید


پست های پیشنهاد شده

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

با تشکر

[shcode=java]

package com.example.book_sqlite;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

public class database extends SQLiteOpenHelper{

    private final Context mycontext;

    public final String path="data/data/com.example.book_sqlite/databases/";

    public final String name="bookdb";

    public SQLiteDatabase mydb;

    public database(Context context) {

        super(context, "bookdb", null, 1);

        // TODO Auto-generated constructor stub

        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 open(){

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

    }

    public void close(){

        mydb.close();

    }

   

    public void useable(){

        boolean checkdb=checkdb();

        if(checkdb){

           

        }else{

            this.getReadableDatabase();

            try{

                copydatabase();

               

            }catch(IOException e){

               

            }

        }

    }

   

    public boolean checkdb() {

        SQLiteDatabase db=null;

        try{

        db=SQLiteDatabase.openDatabase(path+name, null, SQLiteDatabase.OPEN_READONLY);

        }catch(SQLException e)

        {

           

        }

        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("bookdb");

        while ((length = myInput.read(buffer)) > 0) {

        myOutput.write(buffer,0,length);   

        }

        myInput.close();

        myOutput.flush();

        myOutput.close();

    }

   

    .

    .

    .

    .

    .

    .

   

   

}

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان

ی کوئری نوشتم که اطلاعات رو در لیست ویو نمایش میده.

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

کوئریش چی میشه

ی قطعه کد میزام تا بیشتر متوجه بشید:

[shcode=java]

public String topic_display(String table, int row)

    {

        Cursor cu=mydb.rawQuery("select * from "+table,null);

        cu.moveToPosition(row);

        String s=cu.getString(1);

        return s;

    }

    

    public Integer topic_count()

    {

        Cursor cu=mydb.rawQuery("select name_topic from topic",null);

        int s=cu.getCount();

        

        return s;

    }

    

    public String topic_id(String topic, int row)

    {

        Cursor cu=mydb.rawQuery("select id_topic from topic where name_topic='"+topic+"'",null);

        cu.moveToPosition(row);

        String s=cu.getString(1);

        return s;

    }

[/shcode]

گه خودم هم زودتر متوجه شدم براتون قرار میدم

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز اگه میشه توضیح بیشتری در مورد کدهایی که از سایتی که معرفی کردید بدید ممنون میشم

[shcode=java]

[/shcode]

 String selectQuery = "SELECT  * FROM " + TABLE_TODO + " td, "
           + TABLE_TAG + " tg, " + TABLE_TODO_TAG + " tt WHERE tg."
           + KEY_TAG_NAME + " = '" + tag_name + "'" + " AND tg." + KEY_ID
           + " = " + "tt." + KEY_TAG_ID + " AND td." + KEY_ID + " = "
           + "tt." + KEY_TODO_ID;

[shcode=java]

[/shcode]

مثلا td, tg, tt چطور تعریف میشن که توی کوئری ما قابل استفاده است؟!

در ضمن من join کردن رو میدونم ولی اینکه هر عنوانی که کلیک میشه عنوان مربوطش باز بشه رو نمیدونم یعنی جواب نمی گریم از اون کوئری که گذاشتم !!!!؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

با سلام ،

در تیبل دوم یک فبلد با نام id_main  قرار بده که برابر مقدار id تیبل اولت باشه ،

سپس بوسیلی کوئری که در پایین نوشتم id را از تیبل اول بگیر و در تیبل دوم با id_main مقایسه کن ،

میتونی هر id_main را به چند فیلد در تیبل دومت اختصاص بدی :

[align=left]public String  findFiltered2(String selection) {

        Cursor cursor = database.query(Mydatabase.your_table, null,

                selection, null, null, null, null);

cu.moveToPosition(row);

        String s=cu.getString(1);

        return s;

    }

[align=right]به قسمت selection موجود در کد دقت کن :

ابتدا ایدی تیبل 1 را با اینتنت به اکتیوتی 2 بفرست سپس از اونجh بوسیلی کد زیر id_main های همسان با id را میتونی از تیبل 2 بیرون بکشی و استفاده کنی :

[align=left]

        s = dataSource.findFiltered2("cat_id =  " + position);[/align]

[/align]

[align=right]موفق باشید.[/align]

[/align]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...