资讯专栏INFORMATION COLUMN

SQLite 使用详解

lei___ / 2532人阅读

摘要:应用中的任何类不包括应用外部的类均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用对外提供接口。同时期待您的关注,感谢您的阅读,谢谢

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

继承SQLiteOpenHelper 创建数据库,数据表

插入数据库数据

删除数据库数据

查询数据库数据

修改数据库数据

数据库使用案例

Android 提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用 ContentProvider对外提供接口。SQLite 轻量级数据库使用方法如下:

1. 继承SQLiteOpenHelper 创建数据库,数据表 创建数据库表 1. 语法

创建数据表语法 如下:

2. 举例

举例 如下:

3.继承SQLiteDBHelper的创建数据库、数据表

创建数据库、数据表 方法如下:

4.删除数据库表

删除数据库表方法如下:

DROP TABLE IF EXITS TABLE_NAME;
2. 插入数据库数据 插入数据方法一

语法

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

举例

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, "Paul", 32, "California", 20000.00 );
插入数据方法二

语法

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

举例

INSERT INTO COMPANY VALUES (7, "James", 24, "Houston", 10000.00 );
Android 封装insert()插入数据方法三
1.语法
insert(String table, String nullColumnHack, ContentValues values)
2.举例
private SQLiteDatabase db;
db.insert(SQLiteDBHelper.TABLE_NAME, null, values);
3. 删除数据库数据 删除数据库数据方法一
1.语法
DELETE FROM table_name 
WHERE [condition];
2.举例
DELETE FROM COMPANY WHERE ID = 7;
2.Android封装删除数据库数据方法二
1.语法
delete(String table, String whereClause, String[] whereArgs)
举例
private SQLiteDatabase db;
db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
                new String[] { "Jack" });
4. 查询数据库数据 查询数据库方法一
1.语法
SELECT column1, column2, columnN FROM table_name;

查询表中所有数据的方法

SELECT * FROM table_name;
2.举例
//1.查询指定的列
SELECT ID, NAME, SALARY FROM COMPANY;
// 2.查询表中所有内容
SELECT * FROM COMPANY;
Android 封装查询数据库方法二
1.语法
query(String table, String[] columns, String selection,
            String[] selectionArgs, String groupBy, String having,
            String orderBy)
2.举例
private SQLiteDatabase db;
Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
                null, null, null);
5. 修改数据库数据 修改数据库方法一
1.语法
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
2.举例
UPDATE COMPANY SET ADDRESS = "Texas" WHERE ID = 6;
Android update 封装修改数据库方法二
1.语法
update(String table, ContentValues values, String whereClause, String[] whereArgs)
2.举例
db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
                new String[] { "J" });
6. 数据库使用案例

实现效果

创建数据库

创建数据库 方法如下:

public class SQLiteDBHelper extends SQLiteOpenHelper {
    public static String DB_NAME = "person.db";
    // version 必须大于1
    public static int DB_VERSION = 1;
    public static String TABLE_NAME = "person";
    public static String _ID = "_id";
    public static String NAME = "name";
    public static String NICK_NAME = "nickname";

    public SQLiteDBHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    public SQLiteDBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        // SQLite 数据库中,字段一般不区分类型,但是主键除外,主键必须是整型
        String sql = "CREATE TABLE " + TABLE_NAME + "(" + _ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" + "," + NAME
                + " CHAR(10)," + NICK_NAME + " CHAR(10))";
        db.execSQL(sql);
    }

    // 数据库升级的处理方法,
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        if (newVersion > oldVersion) {
            // 删除老的数据表,创建新表
            String dropsql = "DROP TABLE IF EXITS " + TABLE_NAME;
            db.execSQL(dropsql);
            onCreate(db);
        }
    }

}
数据库增加数据方法实现

数据库增加数据方法实现代码如下:

    //
    public void InsertSQL(View view) {

        InstertDB();
        QueryDB();
    }

    /**
     * 插入数据处理方法
     */
    private void InstertDB() {
        ContentValues values = new ContentValues();
        values.put("name", "Jack");
        values.put("nickname", "J");

        // 返回值:最近插入的那一行的行号
        long result = db.insert(SQLiteDBHelper.TABLE_NAME, null, values);
        if (result > 0) {
            Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT)
                    .show();
        } else {
            Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT)
                    .show();
        }
    }
数据库删除内容方法实现

数据库删除内容方法实现代码如下:

    /**
     * 删除数据
     */
    private void DeleteDb() {
        int result = db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
                new String[] { "Jack" });
        if (result > 0) {
            Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_SHORT)
                    .show();
        } else {
            Toast.makeText(getApplicationContext(), "无Jack", Toast.LENGTH_SHORT)
                    .show();
        }
    }
数据库修改内容方法实现

数据库修改内容方法实现代码如下:

    /**
     * 修改数据
     */
    private void UpdateDb() {
        // update person set name="Kitty" where nickname="J"
        ContentValues values = new ContentValues();
        values.put("name", "Lucy");

        int result = db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
                new String[] { "J" });

        if (result > 0) {
            QueryDB();
        }
    }
数据库查询方法实现

数据库查询方法实现代码如下:

    /**
     * 查询数据处理方法
     */
    private void QueryDB() {
        // Select * from person where name= ?
        // db.rawQuery(s)
        // cursor 游标--》 结果集合
        // 当使用SimpleCusorAdapter 时候,cursor 这个记过里面 必须包含“_id”,这个字段
        // Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, "name=?",
        // new String[] { "Jack" }, null, null, null);
        Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
                null, null, null);

        while (cursor.moveToNext()) {

            String name = cursor.getString(cursor.getColumnIndex("name"));
            String nickname = cursor.getString(cursor
                    .getColumnIndex("nickname"));
        }
        // 将一个新的cusor跟原有的custor 交换
        adapter.swapCursor(cursor);
        adapter.notifyDataSetChanged();
    }

布局如下



    

ListView item布局如下




    

    

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75894.html

相关文章

发表评论

0条评论

最新活动
阅读需要支付1元查看
<