如何添加列表SQLite数据库Android studio

如何添加列表SQLite数据库Android studio,android,database,list,sqlite,android-studio,Android,Database,List,Sqlite,Android Studio,我想使用一个类似于此应用程序的应用程序,以便它包含一个列表 我做了很多研究,但没有找到一个简单数据库的解释,该数据库只包含一个列表。您必须创建两个表。一个给父母,另一个给孩子。 在第一个表中为父项指定唯一的id,并在添加子项时使用该id将其映射到父项。更改数据库时,不要忘记将数据库版本更改为更大的值 下面是一个没有外键的示例: 您需要编写getChildListByParentId(int-id) 公共类DatabaseHandler扩展了SQLiteOpenHelper{ 私有静态最终int

我想使用一个类似于此应用程序的应用程序,以便它包含一个列表


我做了很多研究,但没有找到一个简单数据库的解释,该数据库只包含一个列表。

您必须创建两个表。一个给父母,另一个给孩子。
在第一个表中为父项指定唯一的id,并在添加子项时使用该id将其映射到父项。

更改数据库时,不要忘记将数据库版本更改为更大的值

下面是一个没有外键的示例: 您需要编写
getChildListByParentId(int-id)

公共类DatabaseHandler扩展了SQLiteOpenHelper{
私有静态最终int数据库_VERSION=1;
私有静态最终字符串数据库\u NAME=“File\u NAME.db”;//只需使用一个名称即可。
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
私有最终字符串表\u LIST=“main\u LIST”;
私有最终字符串表\u LIST\u ID=“ID”;
私有最终字符串表\u列表\u NAME=“NAME”;
私有最终字符串表\u CHILD\u LIST=“CHILD\u LIST”;
私有最终字符串表\u子\u列表\u ID=“ID”;
私有最终字符串表\u PARENT\u LIST\u ID=“PARENT\u ID”;
私有最终字符串表\u子\u列表\u NAME=“NAME”;
@凌驾
public void onCreate(SQLiteDatabase db){
字符串CREATE_MAIN_LIST_TABLE=“CREATE TABLE”+TABLE_LIST+”(“
+表\u列表\u ID+“整数主键,”
+表\列表\名称+“文本”+”;
字符串CREATE_TABLE_CHILD_LIST=“CREATE TABLE”+TABLE_CHILD_LIST+”(“
+表\u子\u列表\u ID+“整数主键,”
+表\u父\u列表\u ID+“整数,”
+表\子\列表\名称+“文本”+”;
execSQL(创建主列表表);
execSQL(创建表子列表);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表列表);
db.execSQL(“如果存在删除表”+表子列表);
onCreate(db);
}
public void addListItem(ParentListItem项目){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(表\列表\名称,item.getName());
插入(表格列表,空,值);
db.close();
}
public void addChildListItem(ChildListItem项目){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(表\子\列表\名称,item.getName());
value.put(TABLE_PARENT_LIST_ID,item.getParentId());
插入(表格列表,空,值);
db.close();
}
公共void deleteParentItem(int-id){
SQLiteDatabase db=this.getWritableDatabase();
db.delete(TABLE_LIST,TABLE_LIST_ID+“=?”,新字符串[]{String.valueOf(ID)});
db.close();
}
public void deleteChildItem(int-id){
SQLiteDatabase db=this.getWritableDatabase();
db.delete(TABLE_CHILD_LIST,TABLE_CHILD_LIST_ID+“=?”,新字符串[]{String.valueOf(ID)});
db.close();
}
公共列表getAllParentListItem(){
列表结果=新建ArrayList();
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.query(表列表,null,null,null,null,null,null);
while(cursor.moveToNext()){
ParentListItem=新的ParentListItem();
setId(getIntByColumnName(游标,表\子\列表\ ID));
item.setName(getStringByColumnName(游标、表列表名称));
结果.添加(项目);
}
cursor.close();
db.close();
返回结果;
}
public int getIntByColumnName(光标光标、字符串tableColumn){
返回cursor.getInt(cursor.getColumnIndex(tableColumn));
}
public double getDoubleByColumnName(光标光标、字符串tableColumn){
返回cursor.getDouble(cursor.getColumnIndex(tableColumn));
}
公共字符串GetStringByColumnName(光标光标、字符串表列){
返回cursor.getString(cursor.getColumnIndex(tableColumn));
}
}

是的,这是我在编程ios中所做的,但我对Android编程还不熟悉,不知道如何链接这两个表。我希望有一个链接来解释它,如果有的话。感谢您创建表FIRSTTABLE(id、姓名、年龄);创建表SECONTABLE(id、todo、parentID);现在,您可以使用父表的id获取它们;从parentID=1的第二个表中选择*谢谢。。我要试试这个。我可以读更多:谢谢。。我要试试这个
public class DatabaseHandler extends SQLiteOpenHelper {


    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "File_name.db"; // just use a name.


    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    private final String TABLE_LIST = "main_list";
    private final String TABLE_LIST_ID = "id";
    private final String TABLE_LIST_NAME = "name";

    private final String TABLE_CHILD_LIST = "child_list";
    private final String TABLE_CHILD_LIST_ID = "id";
    private final String TABLE_PARENT_LIST_ID = "parent_id";
    private final String TABLE_CHILD_LIST_NAME = "name";

    @Override
    public void onCreate(SQLiteDatabase db) {

        String CREATE_MAIN_LIST_TABLE = "CREATE TABLE " + TABLE_LIST + "("
                + TABLE_LIST_ID + " INTEGER PRIMARY KEY,"
                + TABLE_LIST_NAME + " TEXT" + ")";

        String CREATE_TABLE_CHILD_LIST = "CREATE TABLE " + TABLE_CHILD_LIST + "("
                + TABLE_CHILD_LIST_ID + " INTEGER PRIMARY KEY,"
                + TABLE_PARENT_LIST_ID + " INTEGER,"
                + TABLE_CHILD_LIST_NAME + " TEXT" + ")";

        db.execSQL(CREATE_MAIN_LIST_TABLE);
        db.execSQL(CREATE_TABLE_CHILD_LIST);
    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIST);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CHILD_LIST);

        onCreate(db);
    }


    public void addListItem(ParentListItem item) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(TABLE_LIST_NAME, item.getName());
        db.insert(TABLE_LIST, null, values);
        db.close();
    }

    public void addChildListItem(ChildListItem item) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(TABLE_CHILD_LIST_NAME, item.getName());
        values.put(TABLE_PARENT_LIST_ID, item.getParentId());
        db.insert(TABLE_LIST, null, values);
        db.close();
    }

    public void deleteParentItem(int id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_LIST, TABLE_LIST_ID + " = ?", new String[] { String.valueOf(id) });
        db.close();
    }

    public void deleteChildItem(int id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_CHILD_LIST, TABLE_CHILD_LIST_ID + " = ?", new String[] { String.valueOf(id) });
        db.close();
    }



    public List<ParentListItem> getAllParentListItem() {
        List<ParentListItem> result = new ArrayList<>();

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(TABLE_LIST, null, null, null, null, null, null);

        while (cursor.moveToNext()) {
            ParentListItem item = new ParentListItem();
            item.setId(getIntByColumName(cursor, TABLE_CHILD_LIST_ID));
            item.setName(getStringByColumName(cursor, TABLE_LIST_NAME));
            result.add(item);
        }
        cursor.close();
        db.close();
        return result;
    }



    public int getIntByColumName(Cursor cursor, String tableColumn) {
        return cursor.getInt(cursor.getColumnIndex(tableColumn));
    }


    public double getDoubleByColumName(Cursor cursor, String tableColumn) {
        return cursor.getDouble(cursor.getColumnIndex(tableColumn));
    }


    public String getStringByColumName(Cursor cursor, String tableColumn) {
        return cursor.getString(cursor.getColumnIndex(tableColumn));
    }


}