我们在Android开发中,如果需要本地持久化数据,可以采用SP、数据库、本地文件等方式。SP适合小数据的存取、数据库查询修改方面非常适合、文件存储适合大数据文件的操作。
那SEO靠我么如何在Android中使用数据库呢?
SQLiteOpenHelper类可以帮助我们很方便的操作数据库。
SQLiteOpenHelper类包含一组用于管理数据库的SEO靠我实用API。当使用此类获取对数据库的引用时,系统仅在需要时才执行可能需要长时间运行的数据库创建和更新操作,而不是在应用启动期间执行。
可以调用getWritableDatabase()或getReadaSEO靠我bleDatabase() 方法获取数据库对象。
注意:由于这些操作可能会长时间运行,因此请务必在后台线程中调用 getWritableDatabase() 或 getReadableDatabase(SEO靠我)。
我们要使用数据,首先需要新建一个SQLiteOpenHelper类的子类,并且重写onCreate()和onUpgrade()回调方法,可能还需要实现onDoSEO靠我wngrade()或onOpen()方法,但这些方法并非必需。
代码示例:
public class SQLiteDbHelp extends SQLiteOpenHelper {private statSEO靠我ic final String SQL_CREATE_ENTRIES ="CREATE TABLE " + BookEntry.TABLE_NAME + " (" +BookEntry._ID + "SEO靠我 INTEGER PRIMARY KEY," +BookEntry.COLUMN_NAME_TITLE + " TEXT," +BookEntry.COLUMN_NAME_PRICE + " INTESEO靠我GER)";private static final String SQL_DELETE_ENTRIES ="DROP TABLE IF EXISTS " + BookEntry.TABLE_NAMESEO靠我;public static final String DATABASE_NAME = "budaye_db.db"; //数据库名称public static final int DATABASE_SEO靠我VERSION = 1;public SQLiteDbHelp(Context context){super(context, DATABASE_NAME, null, DATABASE_VERSIOSEO靠我N);}/*** 数据库创建* @param db*/@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(SQL_CREATE_ESEO靠我NTRIES);}/*** 数据库版本升级* @param db* @param oldVersion* @param newVersion*/@Overridepublic void onUpgraSEO靠我de(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL(SQL_DELETE_ENTRIES);onCreate(db);}SEO靠我/*** 数据库版本降级* @param db* @param oldVersion* @param newVersion*/public void onDowngrade(SQLiteDatabasSEO靠我e db, int oldVersion, int newVersion) {onUpgrade(db, oldVersion, newVersion);}}BookEntry类定义了表名称及相关字段SEO靠我。
public class BookEntry implements BaseColumns {public static final String TABLE_NAME = "book";publiSEO靠我c static final String COLUMN_NAME_TITLE = "name";public static final String COLUMN_NAME_PRICE = "priSEO靠我ce"; }例如,我们在主Activity中,创建它:
private SQLiteDbHelp dbHelper;@OverrideprotSEO靠我ected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);……dbHelper = new SEO靠我SQLiteDbHelp(this.getApplicationContext());}新建SQLiteDbHelp对象之后,我们就可以使用数据库了。
第三个参数和第四个参数(selection 和 selectionArgs)会合并起来创建一个 WHERE 子句。由于这两个参数是与选择查询分开提供的,因此它们在SEO靠我合并之前会进行转义。这样一来,您的选择语句就不受 SQL 注入的影响。
如需从表中删除行,您需要提供选择条件,以标识 delete() 方法的目标行。该机制与 query() 方法的目SEO靠我标选择参数的工作方式相同。它将选择规范划分为选择子句和选择参数。子句定义要查看的列,并允许您合并列测试。参数是要测试的值,这些值绑定到子句中。由于结果的处理方式与常规 SQL 语句的处理方式不同,因此SEO靠我不受 SQL 注入的影响。
private void deleteDB(){SQLiteDatabase db = dbHelper.getReadableDatabase();// Define whSEO靠我ere part of query.String selection = BookEntry.COLUMN_NAME_TITLE + " LIKE ?";// Specify arguments inSEO靠我 placeholder order.String[] selectionArgs = { "MyTitle" };// Issue SQL statement.int deletedRows = dSEO靠我b.delete(BookEntry.TABLE_NAME, selection, selectionArgs);}delete() 方法的返回值表示从数据库中删除的行数。
update() 方法的返回值是数据库中受影响的行数。
网站备案号:浙ICP备17034767号-2