文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

条件数据库Android:sqllite的简单使用

2022-06-06 10:46

关注

    SQLite分析

    SQLite是轻量级的、嵌入式的、关系型数据库,现在已经在iPhone、Android等手机系统中应用,SQLite可移植性好,很轻易应用,很小,高效而且牢靠。SQLite嵌入到应用它的应用程序中,它们共用雷同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它倒是完整的,自包括的数据库引擎。

    在android中当须要操作SQLite数据库的时候须要失掉一个SQLiteOpenHelper对象,而SQLiteOpenHelper是一个抽象类,用户须要继承这个类,并实现该类中的一些方法。

   

    1、继承SQLiteOpenHelper之后就拥有了以下两个方法:

    ◆getReadableDatabase() 创立或者打开一个查询数据库

    ◆getWritableDatabase()创立或者打开一个可写数据库

    ◆他们都市返回SQLiteDatabase对象,用户通过失掉的SQLiteDatabase对象进行后续操作

    2、同时用户还可以覆盖以下回调函数,再对数据库进行操作的时候回调以下方法:

    ◆onCreate(SQLiteDatabase):在数据库第一次创立的时候会调用这个方法,一般我们在这个方法里边创立数据库表。

    ◆onUpgrade(SQLiteDatabase,int,int):当数据库须要修改的时候,Android系统会主动的调用这个方法。一般我们在这个方法里边删除数据库表,并建立新的数据库表,当然是否还须要做其他的操作,完整取决于应用程序的需求。

    ◆onOpen(SQLiteDatabase):这是当打开数据库时的回调函数,一般也不会用到。

    须要注意

    1、在SQLiteOepnHelper的子类当中,必须有以下该构造函数
代码如下:
public DatabaseHelper(Context context, String name, CursorFactory factory, 
   int version) { 
  //必须通过super调用父类当中的构造函数 
  super(context, name, factory, version); 
}    为了便利,也可以创立其它的构造函数,含二个参数或者三个参数的。

    2、函数public void onCreate(SQLiteDatabase db)是在调用getReadableDatabase()或者是getWritableDatabase()第一次创立数据库的时候执行,实际上是在第一次失掉SQLiteDatabse对象的时候,才会调用这个方法.

public void onCreate(SQLiteDatabase db) { 
  System.out.println("create a Database"); 
  //execSQL函数用于执行SQL语句 
  db.execSQL("create table user(id int,name varchar(20))"); 
}   

 上面是写好的例子,可以参考下
  代码如下:
 public class DBHelper {

    private static DatabaseHelper mDbHelper;
    private static SQLiteDatabase mDb;

    private static final String   DATABASE_NAME    = "life";

    private static final int      DATABASE_VERSION = 1;

    private Context               mCtx;

    private static class DatabaseHelper extends SQLiteOpenHelper {

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

        @Override
        public void onCreate(SQLiteDatabase db) {
            //创立表结构
            db.execSQL("CREATE TABLE life_history (id INTEGER PRIMARY KEY AUTOINCREMENT,type TEXT, city TEXT, company TEXT, pucNum TEXT, pucName TEXT);");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }

    public DBHelper(Context ctx) throws SQLException {
        this.mCtx = ctx;
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
    }

   
    public void closeConnection() {
        if (mDb != null && mDb.isOpen())
            mDb.close();
        if (mDbHelper != null)
            mDbHelper.close();
    }

   
    public long insert(String tableName, ContentValues initialValues) {

        return mDb.insert(tableName, null, initialValues);
    }

   
    public boolean delete(String tableName, String deleteCondition, String[] deleteArgs) {

        return mDb.delete(tableName, deleteCondition, deleteArgs) > 0;
    }

   
    public boolean update(String tableName, ContentValues initialValues, String selection, String[] selectArgs) {
        return mDb.update(tableName, initialValues, selection, selectArgs) > 0;
    }

   
    public Cursor findList(boolean distinct, String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {

        return mDb.query(distinct, tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
    }

   
    public Cursor findOne(boolean distinct, String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) throws SQLException {

        Cursor mCursor = findList(distinct, tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit);

        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;

    }

   
    public void execSQL(String sql, Object[] args) {
        mDb.execSQL(sql, args);

    }

   
    public void execSQL(String sql) {
        mDb.execSQL(sql);

    }

   
    public boolean isTableExist(String tableName) {
        boolean result = false;
        if (tableName == null) {
            return false;
        }

        try {
            Cursor cursor = null;
            String sql = "select count(1) as c from sqlite_master where type ='table' and name ='" + tableName.trim() + "'";
            cursor = mDb.rawQuery(sql, null);
            if (cursor.moveToNext()) {
                int count = cursor.getInt(0);
                if (count > 0) {
                    result = true;
                }
            }

            cursor.close();
        }
        catch (Exception e) {
        }
        return result;
    }

   
    public boolean isColumnExist(String tableName, String columnName) {
        boolean result = false;
        if (tableName == null) {
            return false;
        }

        try {
            Cursor cursor = null;
            String sql = "select count(1) as c from sqlite_master where type ='table' and name ='" + tableName.trim() + "' and sql like '%" + columnName.trim() + "%'";
            cursor = mDb.rawQuery(sql, null);
            if (cursor.moveToNext()) {
                int count = cursor.getInt(0);
                if (count > 0) {
                    result = true;
                }
            }

            cursor.close();
        }
        catch (Exception e) {
        }
        return result;
    }

}
 

您可能感兴趣的文章:Android SQLite数据库增删改查操作的使用详解Android使用SQLite数据库的简单实例android将图片转换存到数据库再从数据库读取转换成图片实现代码android创建数据库(SQLite)保存图片示例Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)Android学习笔记-保存数据到SQL数据库中(Saving Data in SQL Databases)android实现raw文件夹导入数据库代码Android中操作SQLite数据库快速入门教程Android数据库操作工具类分享


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯