Android 连接SQLite

 

Android的页面显示的数据主要是从数据库中获取数据的,android开发中使用的是SQLite数据库。

SQLite的优点:

  1. 轻量级

    使用 SQLite 只需要带一个动态库,就可以享受它的全部功能, 而且那个动态库的尺寸想当小。
  2. 独立性

    SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
  3. 隔离性

    SQLite 数据库中所有的信息(比如表、视图、触发器等) 都包含在一个文件夹内,方便管理和维护。
  4. 跨平台

    SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统 也是能够运行,比如:Android。
  5. 多语言接口

    SQLite 数据库支持多语言编程接口。
  6. 安全性

    SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。 这意味着多个进程可以在同一时间从同一数据库读取数据, 但只能有一个可以写入数据。

 在Android中连接SQLite需要先创建一个类,并且这个类extends SQLiteOpenHelper,代码如下:

  

package com.example.sql;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLDatabase extends SQLiteOpenHelper {
    private static final String db_name = "myDatabse";//自定义的数据库名;
    private static final int version =1;//版本号
    public MySQLDatabase(Context context) {
        super(context, db_name, null, version);
        
    }
//该方法会自动调用,首先系统会检查该程序中是否存在数据库名为‘myDatabase’的数据库,如果存在则不会执行该方法,如果不存在则会执行该方法。
    @Override
    public void onCreate(SQLiteDatabase arg0) {
        String  sql ="create table wx_user(" +
                "id int primary key," +
                "name varchar(30)," +
                "tou varchar(20)," +
                "content varchar(50)," +
                "dateTime varchar(30)" +
                ")";
        arg0.execSQL(sql);
        
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub
        
    }
    
}
SQLiteOpenHelper是SQLiteDatabase的一个帮助类, 用来管理数据库的创建和版本的更新。 一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。 常用的方法有:

onCreate(SQLiteDatabase db)
创建数据库时调用

 

onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)
版本更新时调用

 

getReadableDatabase()
创建或打开一个只读数据库

 

getWritableDatabase()
创建或打开一个读写数据库

这里创建了数据库类,接下来是往数据库中插入数据;

 

//实例化刚才上面我们创建的那个类    
MySQLDatabase mySQLDatabase = new MySQLDatabase(MainActivity.this);
/*在通过getReadableDatabase()方法
    或者通过getWritableDatabase()
获得SQLDatabse类的对象;通过SQLDatabase类的对象来对数据进行操作;*/
        SQLiteDatabase sqlDatabase =  mySQLDatabase.getReadableDatabase();
        

 

SQLDatabase类的常用方法:

  • (long) insert(String table,String nullColumnHack,ContentValues values)
  • (int) delete(String table,String whereClause,String[] whereArgs)
    删除数据行的便捷方法
  • (int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 更新数据行的便捷方法
  • (void) close()
    关闭数据库
  • (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
    查询指定的数据表返回一个带游标的数据集
  • (Cursor) rawQuery(String sql, String[] selectionArgs)
    运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)
  • (void) execSQL(String sql)//这个是执行SQL语句(sql字符串可以是select,delete,或者insert,update中的任意语句)

 

//往数据库中插入数据的代码,在这里我使用的是execSQL(sql);
for(int i=0;i<20;i++){
            String sql = "insert into wx_user(id,name,tou,content,dateTime) values("+i+",'张校花"+i+"','aa','你今天会被打','11月19日')";
            sqlDatabase.execSQL(sql);
}

往数据库中参入数据之后,我们再将数据库中的数据取出来看看;我们需要先创建一个实体类;

package com.example.entiy;

public class unserInFo {
    
    private int id;
    private String name;
    private String dateTime;
    private String tou;
    private String content;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDateTime() {
        return datetime;
    }
    public void setDateTime(String dateTime) {
        this.dateTime= dateTime;
    }
    public String getTou() {
        return tou;
    }
    public void setTou(String tou) {
        this.tou = tou;
    }
    
    @Override
    public String toString() {
        return "unserInFo [id="+id+,"name=" + name + ", dataTime=" + dataTime+ ", tou="
                + tou+ "]";
    }
    public unserInFo() {
        super();
        // TODO Auto-generated constructor stub
    }
    
}

 

获取数据

//定义一个集合用来存放所有的结果
List<unserInFo> user = new ArrayList<unserInFo>();
//通过游标来获取表wx_user的信息,
Cursor c=sqlDatabase.query("wx_user", null, null, null, null, null, null);
        //先判断是否有第一条数据(ic.moveToFirst()将游标移到第一条数据,如果没有第一条数据则返回false,否则返回true)
       if(c.moveToFirst()){
                //通过getCount()来决定循环的次数getCount()是游标的总数量。
        for (int i = 0; i<c.getCount();i++) {
            unserInFo uif = new unserInFo();
            
            //将游标移动到下一条数据
            c.moveToNext();
            uif.setId(c.getInt(c.getColumnIndex("id")));
            uif.setLastdate(c.getString(c.getColumnIndex("dateTime")));
            uif.setName(c.getString(c.getColumnIndex("name")));
            uif.setZhao(c.getString(c.getColumnIndex("tou")));
            uif.setContent(c.getString(c.getColumnIndex("content")));
            user.add(uif);
            
        }
}    
//最后数据库中获取到的数据就全部存放到user集合中了,我们只需要遍历user就能显示数据了。

 

转载于:https://www.cnblogs.com/xzmr/p/6113592.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
Android连接SQLite源代码项目需要以下几个步骤: 1. 创建一个新的Android项目。可以在Android Studio中选择创建一个新的空白项目。在项目的build.gradle文件中添加SQLite的依赖项。 2. 在src/main/java目录中创建一个新的Java类,用于实现SQLite数据库连接和操作。可以命名为DatabaseHelper。在该类中,需要继承SQLiteOpenHelper类,并实现其构造方法、onCreate()和onUpgrade()等方法。 3. 在onCreate()方法中,可以通过调用getWritableDatabase()方法创建或打开一个SQLite数据库。在该方法中可以定义表格结构,并执行创建表格的SQL语句。 4. 在onUpgrade()方法中,可以处理数据库版本更新的逻辑。可以通过检查旧版本号和新版本号的差异来判断数据库结构是否需要更新,并执行相应的升级操作。 5. 在需要使用数据库的Activity或Fragment中,创建DatabaseHelper的实例。通过调用getWritableDatabase()方法获得可写数据库的引用,或者调用getReadableDatabase()方法获得可读数据库的引用。可以使用这些数据库引用进行数据的插入、查询、更新和删除等操作。 6. 为了保持数据库操作的封装性和可复用性,可以在DatabaseHelper中定义一些公共的方法,如insertData()、queryData()、updateData()和deleteData()等方法,用于执行常见的数据库操作。 7. 在项目的AndroidManifest.xml文件中,添加数据库访问所需的权限,如"android.permission.WRITE_EXTERNAL_STORAGE"和"android.permission.READ_EXTERNAL_STORAGE"等权限。 以上是连接SQLite的大致步骤,开发者可以根据具体项目的需求进行相应的调整和扩展。SQLite是一种轻量级的数据库引擎,它在Android开发中被广泛应用,能够提供可靠的本地数据存储和查询功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值