android studio中的数据库

android studio中的数据库,android,database,sqlite,database-design,android-studio,Android,Database,Sqlite,Database Design,Android Studio,我是一名windows phone开发者,刚开始使用android studio开发android应用程序 我需要创建一个数据库,并在其中存储值,并在屏幕上检索更新的值,因此我需要以下方面的帮助: 创建数据库。 如何在屏幕上显示数据库中的值? 一个好的开始方式是阅读Android官方文档网站上的存储选项:要创建数据库,您需要扩展SQLiteOpenHelper并需要一个接受上下文的构造函数。 假设您将这个类命名为DBOperator。表格创建过程如下所示 public class DbOpera

我是一名windows phone开发者,刚开始使用android studio开发android应用程序

我需要创建一个数据库,并在其中存储值,并在屏幕上检索更新的值,因此我需要以下方面的帮助:

创建数据库。 如何在屏幕上显示数据库中的值?
一个好的开始方式是阅读Android官方文档网站上的存储选项:

要创建数据库,您需要扩展SQLiteOpenHelper并需要一个接受上下文的构造函数。 假设您将这个类命名为DBOperator。表格创建过程如下所示

public class DbOperator extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "DB_NAME";
    protected static final String FIRST_TABLE_NAME = "FIRST_TABLE";
    protected static final String SECOND_TABLE_NAME = "SECOND_TABLE";

    public static final String CREATE_FIRST_TABLE = "create table if not exists "
            + FIRST_TABLE_NAME
            + " ( _id integer primary key autoincrement, COL1  TEXT NOT NULL, COL2 TEXT NOT NULL,COL3 TEXT, COL4 int, COL5 TEXT,"
            + "COL6 TEXT,COL7 REAL, COL8 INTEGER,COL9 TEXT not null);";

    public static final String CREATE_SECOND_TABLE = "create table if not exists "
            + SECOND_TABLE_NAME+.........

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_SFIRST_TABLE);
        db.execSQL(CREATE_SECOND_TABLE);
        //db.close();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //THIS WILL BE EXECUTED WHEN YOU UPDATED VERSION OF DATABASE_VERSION
        //YOUR DROP AND CREATE QUERIES
    }
}
现在,您的数据操作类add、delete、update将如下所示

public class FirstTableDML extends DbOperator {

    public FirstTableDML(Context context) {
        super(context);
    }

    private static final String COL_ID = "_id";
    private static final String COL1 = "COL1";
    private static final String COL2 = "COL2";
    ........
    .......

    public void deleteFirstTableDataList(List<FirstTableData> firstTableDataList) {
        for (FirstTableData data : firstTableDataList)
            deleteFirstTableDetailData(data);
    }
    public void deleteFirstTableDetailData(FirstTableData item) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(FIRST_TABLE_NAME, item.getId() + "=" + COL_ID, null);
        db.close();
    }
    /**this method retrieves all the records from table and returns them as list of  
     FirstTableData types. Now you use this list to display detail on your screen as per your 
    requirements.
    */
    public List< FirstTableData > getFirstTableDataList() {
        List< FirstTableData > firstTableDataList = new ArrayList< FirstTableData >();
        String refQuery = "Select * From " + FIRST_TABLE_NAME;
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(refQuery, null);
        try {
            if (cursor.moveToFirst()) {
                do {
                    FirstTableData itemData = new FirstTableData();

                    itemData.setId(cursor.getInt(0));

                    itemData.setCol1(cursor.getString(1));
                    itemData.setCol2(cursor.getInt(2));
                    .....
                    .....

                    firstTableDataList.add(itemData);
                } while (cursor.moveToNext());
            }
        } finally {

            db.close();
        }

        Collections.sort(itemDataList);
        return itemDataList;
    }

    public int  addFirstTableData(FirstTableData data) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();

        values.put(COL1, data.getCol1());
        values.put(COL2, data.getCol2());
        .....
        .....
        long x=db.insert(FIRST_TABLE_NAME, null, values);
        db.close();
        return (int)x;
    }

    public void updateItemDetailData(FirstTableData data) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();

        values.put(COL1, data.getCol1());
        values.put(COL2, data.getCol2());
        values.put(COL3, data.getCol3());
        .....
        .....


        db.update(FIRST_TABLE_NAME, values, COL_ID + "=" + data.getId(),    null);
        db.close();
    }

}
注:*数据类是表示相应表的POJO数据类。 因为您说您对这些并不完全陌生,所以我没有提供任何帮助器注释,因为大多数方法名称都是不言自明的。 希望它能帮助您入门。

要为Android应用程序创建数据库,有两种方法: 使用代码创建数据库和表 使用现有数据库 1使用代码创建数据库和表

在这个场景中,您必须编写一个类和代码来为其创建数据库和表。您必须使用不同的类和接口,如SQLiteOpenHelper、SQLiteDatabase等。请检查上面Jimmy发布的答案

2.使用现有数据库

在这个场景中,您可以在android应用程序中使用现有的sqlite数据库。您必须将数据库文件放在assets文件夹中,并编写代码将现有数据库复制到内部或外部存储

关于最佳方案,我认为这取决于应用程序的功能和性质,如果您的数据库很小,那么您应该使用第一种方案,如果您的数据库很大,有很多表,那么您应该使用第二种方案,因为您将使用任何基于GUI的SQLite浏览器创建数据库,这将帮助您减少错误。当我说使用GUI的错误更少时,相信我,有可能通过代码创建表

如何在屏幕上显示数据库中的值? 为此,您必须编写一个SQL查询,该查询返回一组结果数据,即游标,因此您必须迭代游标数据,并根据ArrayList或Array或HashMap准备一组数据

您可以在ListView或GridView中显示这组数据

另外,我不会发布任何教程或示例的链接,因为网上有大量的信息/示例,所以建议您在给定的点周围搜索