Android安卓开发 自带数据库SQLite使用教程

新建一个java类  继承SQLiteOpenHelper 

public class MyDatabaseHelper extends SQLiteOpenHelper {

  /*建表语句  用sql写  
        创建一个book表 有5个字段*/
    public static final String CREATE_BOOK = "create table book("
            + "id integer primary key autoincrement,"
            + "author text,"
            + "price real,"
            + "pages int,"
            + "name text)";

    public static final String CREATE_CATEGORY = "create table Category ("
            + "id integer primary key autoincrement, "
            + "category_name text, "
            + "category_code integer)";



    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

/*第一次创建数据库的时候会执行这个函数
所以在这个函数里建表
db.execSQL() 函数 这个函数经常要用的
用来执行sql命令  接收一个String参数 
把刚刚写的sql语句传进去 就能创建表了  */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_BOOK);
        db.execSQL(CREATE_CATEGORY);
    }


/*升级数据库的时候会执行这个函数
比如要新增字段 新增加表  就在这个函数里操作*/
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
    }
}

在Activity里调用数据库
先new一个MyDatabaseHelper 

MyDatabaseHelper   databaseHelper = new MyDatabaseHelper(
              this,           \\上下文 传入Activity
              "book.db",  \\数据库的文件名
              null, 
             2                 \\数据库版本
);

调用MyDatabaseHelper 的getWritableDatabase 获取数据库
以后就可以用db操作数据库了

SQLiteDatabase db = databaseHelper.getWritableDatabase();


插入数据  可以用db.execSQL执行sql语句
第一个参数是sql语句,第二个参数是数据  用一个String数组包装
下面插入一本书到book表,书名精通java 作者Dan Brown 454页 价格99

db.execSQL("insert into Book "
                       + "(name,author,pages,price)"
                        + "values(?,?,?,?)"  ,
           new String[]{  "精通java",  "Dan Brown",  "454", "99"}
);

也可以用db的insert()函数插入  先声明一个 ContentValues 
ContentValues values = new ContentValues();
//用ContentValues ,put方法传入数据
//第一个参数是字段名,第二个参数是数据 
 values.put("name", "精通java");
 values.put("author", "Dan Brown");
values.put("pages", 454);
values.put("price", 999);
//调用db的insert()插入 第一个参数是表名  第三个是ContentValues
db.insert("Book", null, values);
  

//查询 用db.query  返回一个Cursor 里面有数据
Cursor cursor = db.query("Book",
                        null, null, null, null, null, null);
//查之前先把Cursor位置移到第一   从第一条开始查
boolean succeed = (cursor.moveToFirst();

  if  (  succeed  ) {

                    do {
//先判断字段的数据类型 如果是String 就用 cursor.getString 
// 是Double 就用 cursor.getDouble  以此类推
//cursor.getString函数需要传入 ColumnIndex
//用 cursor.getColumnIndex 传入字段名  

                        String name = cursor.getString
                                (cursor.getColumnIndex("name"));
                        String author = cursor.getString
                                (cursor.getColumnIndex("author"));
                        int pages = cursor.getInt
                                (cursor.getColumnIndex("pages"));
                        double price = cursor.getDouble(
                                cursor.getColumnIndex("price"));

     //查完一条之后调用cursor.moveToNext()把cursor的位置移动到下一条
                    } while (cursor.moveToNext());

 }
//全部查完后  把cursor关闭
cursor.close();



    原文作者:安徒生的童话慢慢融化
    原文地址: https://www.jianshu.com/p/231ac18ad656
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞