Android Studio自带数据库SQLite的用法部分总结

SQLite是Android自带的一款轻量级的关系型数据库,它的运算速度非常快,且占用很少的资源,因而很适合在移动设备上使用。对于不熟悉连接外部数据库和添加删除数据的Android开发入门者来说,SQLite比一般的数据库要简单得多,不用设置用户名和密码就可以使用。

1. 安装

在使用之前需要前往AndroidSDK\platform-tools目录下找到sqlite3.exe文件,双击可进入Dos界面。

将上述platform-tools所在目录添加到环境变量配置中Path下,即可完成完成配置。

验证成功安装的方法:win+R输入cmd记入Dos界面,输入SQLite3,若出现以下界面就表示已成功安装。

2. 创建数据库

要使用SQLite,就必须谈到SQLiteOpenHelper这个类了,它是一个抽象类,我们需要创建一个自己的主类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是OnCreate()和onUpgrade(),我们需要在自己的类下重写这两个方法。

同时SQLiteOpenHelper还有两个重要的实例方法:getReadableDatabase()和getWriteableDatabase()。这两个方法均可创建或打开一个现有数据库,并返回一个可对数据库进行读写操作的对象。区别在于:当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()方法返回的对象将只以只读方式打开数据库,而getWriteableDatabase()方法将出现异常。

接下来可以进行实践了,我们创建一个名为Land.db的数据库,然后在这个数据库中新建一张Land表,表中有一些自定义的列。定义列时按照SQL语句进行。对于数据类型,integer表示整型,real表示浮点型,text表示文本类型,blob表示二进制类型。

​public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String CREATE_LAND = "create table Land ("
            //primary key设置为主键,autoincrement关键字表示该列是自增长的
            + "area_id text primary key autoincrement,"  
            + "flag text,"
            + "plot integer,"
            + "land_position_id text,"
            + "land_position_acreage real)";
    private Context mContext;
    public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super( context, name, factory, version );
        mContext = context;
    }

    public void onCreate(SQLiteDatabase db){
        //调用SQLiteDatabase的execSQL()方法执行建表语句
        db.execSQL(CREATE_LAND);
        //弹出一个Toast提示创建成功
        Toast.makeText(mContext, "Create succeeded.", Toast.LENGTH_SHORT).show();
    }

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

    }​

对应布局文件,可以自己设计一个Button,这里不多做赘述。最后修改MainAcivity(不一定是主活动,只要是与布局对应的Java均可,这里以MainActivity为例)中的代码:

public class MainActivity extends AppCompatActivity {
    private DatabaseHelper dbHelper;

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        //指定数据库名为"Land.db",版本号为1
        dbHelper = new DatabaseHelper( this, "Land.db" ,null,1 );
        //指定对应于布局文件夹中的Button create_database
        Button createDatabase = (Button) findViewById( R.id.create_database );
        //设计点击事件,点击create_database Button后弹出Toast显示创建成功
        createDatabase.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper.getWritableDatabase();
            }
        } );
    }
}

2. 添加数据

SQLiteDatabase中提供了一个insert()方法专门用于添加数据。它接受3个参数,第一个是表名,即我们想要添加数据的表。第二个是在未指定添加数据的情况下给某些可为空的列自动赋值null,我们一般传入null即可。第三个是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,我们只需要将表中的每个列名以及相应的待添加数据传入即可。

接下来进行实践。在layout中的activity_main.xml添加一个id为add_data,名为Add data的Button。

接着修改MainAcivity中的代码:

public class MainActivity extends AppCompatActivity {
    private DatabaseHelper dbHelper;

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        dbHelper = new DatabaseHelper( this, "Land.db" ,null,2);
        Button createDatabase = (Button) findViewById( R.id.create_database );
        Button addData = (Button) findViewById( R.id.add_data );
        createDatabase.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper.getWritableDatabase();
            }
        } );
        addData.setOnClickListener( new View.OnClickListener(){
            @Override
            public void onClick(View v){
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                //添加第一条数据
                values.put("area_id","A");
                values.put("flag","A1");
                values.put("plot",001);
                values.put("land_position_id","A1001");
                values.put("land_position_acreage",0.5);
                db.insert( "Land",null,values ); //插入第一条数据
                values.clear();
                //添加第二条数据
                values.put("area_id","A");
                values.put("flag","A1");
                values.put("plot",002);
                values.put("land_position_id","A1002");
                values.put("land_position_acreage",0.4);
                db.insert( "Land",null,values ); //插入第二条数据
            }
        } );
    }
}

 在添加数据按钮的点击事件里,我们先获取了SQLiteDatabase对象,然后使用ContentValues来对要添加的数据进行组装。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值