Java 在SQLite中显示多个具有连接id的表中的数据

Java 在SQLite中显示多个具有连接id的表中的数据,java,android,sqlite,cursor,Java,Android,Sqlite,Cursor,我的SQLite数据库中有两个表,第一个是用户,第二个是作业,其中一个用户可以有多个作业要做 用户表中的数据 id name 1 Me 2 You id jobname userid 1 JobA 2 2 JobB 2 3 JobC 1 其中,id通过以下方式生成:id整数主键自动递增 作业表中的数据 id name 1 Me

我的SQLite数据库中有两个表,第一个是用户,第二个是作业,其中一个用户可以有多个作业要做

用户
表中的数据

id      name
1        Me
2       You
id     jobname     userid
1       JobA          2
2       JobB          2
3       JobC          1
其中,
id
通过以下方式生成:id整数主键自动递增

作业
表中的数据

id      name
1        Me
2       You
id     jobname     userid
1       JobA          2
2       JobB          2
3       JobC          1
其中,
id
通过以下方式生成:id整数主键自动递增

其中
user\u id
users表中获取

现在,我想一个接一个地
遍历所有用户和作业表,如果用户有一些作业要做,那么需要显示Toast

JobC assigned to user1
DatabaseHandler.java:

public class DatabaseHandler extends SQLiteOpenHelper {

..................

public DatabaseHandler(Context context) {

   super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

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

    db.execSQL("CREATE TABLE " + TABLE_USERS + 
              "(id integer primary key autoincrement," +
              " name text);");

        db.execSQL("CREATE TABLE " + TABLE_JOBS + 
              "(id integer primary key autoincrement," +
              " jobname text" +
              " userid long);");        
}

// Insert data into users table
public long InsertUsers(String name) {

     try {
        SQLiteDatabase db;
        db = this.getWritableDatabase(); // Write Data

        ContentValues Val = new ContentValues();
        Val.put("name", name); 

        long rows = db.insert(TABLE_USERS, null, Val);

        db.close();
        return rows; // return rows inserted.

     } catch (Exception e) {
        return -1;
     }
}

    // Insert data into jobs table
public long InsertJobs(String jobname, long userid) {

     try {
        SQLiteDatabase db;
        db = this.getWritableDatabase(); // Write Data

        ContentValues Val = new ContentValues();
        Val.put("jobname", jobname); 
        Val.put("userid", userid); 

        long rows = db.insert(TABLE_JOBS, null, Val);

        db.close();
        return rows; // return rows inserted.

     } catch (Exception e) {
        return -1;
     }
}   

public String[] getUsersId() {

    String selectQuery = "SELECT id FROM " + TABLE_USERS;
          SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.rawQuery(selectQuery, null);
             String[] data = null;

    if (cursor.moveToFirst()) {
        do {

            int id_row=cursor.getInt(cursor.getColumnIndex("id"));
                Log.d("TAG","id is ::"+id_row);             

        } while (cursor.moveToNext());
    }

    db.close();
    return data;
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_JOBS);
    onCreate(db);
 }

}
在MainActivity.java中:

    DatabaseHandler dh;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

            dh = new DatabaseHandler(MainActivity.this);

            buttonGetData.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dh.getUsersId();
                }
            });

   }

我不会给出确切的代码,但尝试执行类似于此的查询。在提出问题之前做一点调查

String newQuery="SELECT db1.your_column db2.you_coloum2 from table1 db1, table2 db2 where db2.u_id=db1.id;

使用光标获取结果

您可以使用“连接”进行操作:

db.rawQuery("SELECT j.jobname, u.name FROM jobs j JOIN users u ON j.userid=u.id");