Android怎么把正确的把数据插入到数据库中

45次阅读
没有评论

共计 2884 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要讲解了“Android 怎么把正确的把数据插入到数据库中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Android 怎么把正确的把数据插入到数据库中”吧!

定义模式和约束

SQL 数据的一个主要原则是模式:数据库是如何组织的一个正式声明。模式被反映在你用于创建数据库的 SQL 语句中。你可能会发现,它有助于创建伴侣类,即约束(contract)类,这个类使用系统性的和自记录的方式来明确的指定你的模式的布局。

约束(contract)类是一个定义 URIs、表名和列名的常量容器。在相同包中的所有类都可以使用这个约束类中的常量。这样就会一处修改,全局有效。

组织约束类的一个好方法是把定义放到类的根层次,以便它对整个数据库有效。

注意:通过实现 BaseColumns 接口,你的内部类会继承一个叫做_ID 的主键,某些 Android 类(如游标适配器)会希望有这个字段。它不是必须的,但是,这个字段会帮助你的数据库跟 Android 框架更和谐的工作。

例如,以下代码片段定义一个表的表名和列名:

publicstaticabstractclassFeedEntryimplementsBaseColumns{ 
   public static final String TABLE_NAME = entry  
    public static final String COLUMN_NAME_ENTRY_ID = entryid  
    public static final String COLUMN_NAME_TITLE = title  
    public static final String COLUMN_NAME_SUBTITLE = subtitle  
    … 
}

为了防止约束类被意外的实例化,它的构造器是私有的:

// Prevents the FeedReaderContract class from being instantiated. 
private FeedReaderContract() {}

使用 SQL 辅助器来创建数据库

一旦你定义了你的数据库,你就应该实现创建和维护数据库以及表的方法。以下是创建和删除表的典型语句:

privatestaticfinalString TEXT_TYPE =
TEXT  
private static final String COMMA_SEP = ,  
private static final String SQL_CREATE_ENTRIES = 
    CREATE TABLE + FeedReaderContract.FeedEntry.TABLE_NAME + (+ 
    FeedReaderContract.FeedEntry._ID + INTEGER PRIMARY KEY, + 
    FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP + 
    FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP + 
    … // Any other options for the CREATE command 
    )  
 
private static final String SQL_DELETE_ENTRIES = 
    DROP TABLE IF EXISTS + TABLE_NAME_ENTRIES;

就像你在设备的内部存储器上保存文件那样,Android 会在跟应用程序关联的私有的硬盘空间中保存你的数据库。因为默认情况下,这块区域对其他应用程序来说是不可访问的,所以你的数据是安全的。

使用 SQLiteOpenHelper 类中的一组 API 是有益的。因为当因使用这个类来获取数据库的引用时,系统只会在需要时和应用程序的非启动期间来执行潜在的创建和更新数据库的长时操作。你需要做所有工作就是调用 getWritableDatabase() 或 getReadableDatabase() 方法。

注意:因为它们是长时操作,所以必须确保在后台的线程中调用 getWritableDatabase() 和 getReadableDatabase() 方法,如在 AsyncTask 或 IntentService 中调用。

要使用 SQLiteOpenHelper,就要继承 SQLiteOpenHelper 类来创建一个子类,并重写 onCreate()、onUpgrade() 和 onOpen() 回调方法,还可以选择性的实现 onDowngrade() 回调方法。

例如,以下是 SQLiteOpenHelper 类的一个子类实现:

publicclassFeedReaderDbHelperextendsSQLiteOpenHelper{ 
   // If you change the database schema, you must increment the database version. 
    public static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = FeedReader.db  
 
    public FeedReaderDbHelper(Context context) { 
        super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    public void onCreate(SQLiteDatabase db) { 
        db.execSQL(SQL_CREATE_ENTRIES); 
    } 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
        // This database is only a cache for online data, so its upgrade policy is 
        // to simply to discard the data and start over 
        db.execSQL(SQL_DELETE_ENTRIES); 
        onCreate(db); 
    } 
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
        onUpgrade(db, oldVersion, newVersion); 
    } 
}

使用以下方法来访问你的数据库:

FeedReaderDbHelper mDbHelper =newFeedReaderDbHelper(getContext());

感谢各位的阅读,以上就是“Android 怎么把正确的把数据插入到数据库中”的内容了,经过本文的学习后,相信大家对 Android 怎么把正确的把数据插入到数据库中这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计2884字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)