md98

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

5 ارسال در این موضوع قرار دارد

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

با تشکر

[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]

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری