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来对要添加的数据进行组装。
更多相关文章
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- android EventBus学习记录
- Android(安卓)中Canvas.drawBitmap()的使用
- 2011/06/13 android使用html做UI的方法---js与java的相互调用
- 深入理解Android(4)——理解Android中的JNI(下)
- Android消息机制(Handler)——深入源码解析
- android一些概念和知识