Java 在SQLite中显示多个具有连接id的表中的数据
我的SQLite数据库中有两个表,第一个是用户,第二个是作业,其中一个用户可以有多个作业要做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
用户
表中的数据
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");