我已经成功地创建了一个包含多个表的数据库,并成功地使用 rawQuery 选择了所有表。所有表都是相似的,我的意思是它们具有不同值的相同列。现在我需要打印一个新活动中的所有表格。我想通过在 TableLayout 中添加行来做到这一点。每个新表都将打印在新行中。
请纠正我或显示另一种方法。我这样做:
//添加新表
EditText title = (EditText)findViewById(R.id.Title);
String Title = title.getText().toString();
EditText d = (EditText)findViewById(R.id.director);
String Director = d.getText().toString();
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS " + Title + " (Title VARCHAR, Director VARCHAR);");
db.execSQL("INSERT INTO " + Title + "(Title) VALUES('" + Title + "');");
db.execSQL("INSERT INTO " + Title + " (Director) VALUES('" + Director + "');");
db.close();
startActivity(new Intent(Add.this, Browse.class));
//选择
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table'",null);
//尝试在遇到新标题时创建新行
c.moveToFirst();
TableLayout tl = (TableLayout)findViewById(R.id.myTableLayout);
while (c.moveToNext())
{
if (c.getString(c.getColumnIndex("Title")) != null)
{
String Title = c.getString(c.getColumnIndex("Title"));
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
/* Create a Button to be the row-content. */
TextView b = new TextView(this);
b.setText(Title);
b.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
/* Add Button to row. */
tr.addView(b);
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
c.moveToNext();
}
但是 DDMS 说它无法从第 1 行 col -1 获取字段插槽。
顺便说一句,我在每个表中只有 2 列,但 CursorWindow 说有 5 列。
请帮忙!