Android数据存储之SQLite
来源:互联网 发布:java求100后第一个素数 编辑:程序博客网 时间:2024/06/09 04:20
本人是菜鸟,还在校读书,目前只是简单写写略微粗糙,后续还会修正更新的。
什么是Sqlite?
安卓数据存储五种方式之一的数据库。用的是一种嵌入式轻量级的数据库.。Sqlite尽管是轻量级别的,但是它存储的内容可不小,最高可存储2T的容量。这种数据库有以下几种特性:
- 轻量级
- 独立性
- 隔离性
- 跨平台
- 多语言接口
- 安全性
- 等等特性。
建立一个简单的数据库文件
怎么创建一个简单的Sqlite数据库文件呢?
首先创建一个工程,然后创建一个Mysqlite类继承自SQLiteOpenHelper.
package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by Does on 2017/7/16. */public class MySqlite extends SQLiteOpenHelper { //数据库文件 public static final String DB_NAME="dataBase.db"; //数据库版本 public static final int DB_VERSION=1; public MySqlite(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { }}
然后在MainActivity的onCreate()方法里添加两行代码。
//创建一个数据库文件 MySqlite sqlite=new MySqlite(this); sqlite.getWritableDatabase();
点击运行,运行完成之后,打开DDMS,
这个简单的数据库文件就建立成功了。
这里要提到一点的就是,sqlite.getReadableDatabase()和getWritableDatabase()都是可以创建数据库的。
如果我们要创建表,就需要在MySqlite类里的onCreate()方法里写相应的建表语句。打开ddms,找到原来的数据库文件并删除dataBase文件,然后在MySqlite类,onCreate()方法里写,并加入log日志打印输出。
@Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log.i("does", "onCreate: "); //创建数据库表 sqLiteDatabase.execSQL("create table Student(_id integer primary key autoincrement" + "," +"username varchar(20),phone varchar(15));"); }
log语句正常输出说明创建数据库文件成功,然后打开DDMS将其导出,并用Sqlite expert查看刚刚创建的表是否写入数据库文件.
onUpgrade()此方法调用的前提是,数据库的版本发生改变了。才会调用此方法,如果假如你将数据库的版本修改一下,然后在onUpgrade方法里打印语句就知道了,这么不做演示。
接下来我们升级一下,分别创建一个存放常量的一个Contants类
public class Contants { public static final String DB_NAME="dabase.db"; public static final int DB_VERSION=1; public static final String DB_TABLE="contact";}
创建一个Dao方法用于数据库的增删查改操作。
package com.example.sqlite;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;/** * Created by Does on 2017/7/16. */public class SqliteDao { private MySqlite sqlite; public SqliteDao(Context context) { sqlite=new MySqlite(context); } //插入 public void insert(String username,String phone){ SQLiteDatabase db = sqlite.getWritableDatabase(); db.execSQL("insert into contact (username,phone) values(?,?);",new String[]{username,phone}); } //删除 public void dele(String username){ SQLiteDatabase db = sqlite.getWritableDatabase(); db.execSQL("delete from contact where username=?;",new String[]{username}); } //修改 public void modi(String phone,String username){ SQLiteDatabase db = sqlite.getWritableDatabase(); db.execSQL("update contact set phone=? where username=?;",new String[]{phone,username}); } //查找 public void query(String phone){ SQLiteDatabase db = sqlite.getWritableDatabase(); Cursor cursor = db.rawQuery("select username,phone from contact where phone=?;", new String[]{phone}); if(cursor.moveToNext()){ String username = cursor.getString(0); Log.i("does", "query: "+username); } }}
在xml布局文件里添加四个按钮。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.sqlite.MainActivity"> <Button android:text="增加" android:id="@+id/insert" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="删除" android:id="@+id/dele" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="修改" android:id="@+id/modify" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="查询" android:id="@+id/query" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
MainActivity主要入口。
package com.example.sqlite;import android.app.Activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity implements View.OnClickListener { SqliteDao mDao; private Button insert,dele,query,modify; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mDao =new SqliteDao(this); MySqlite mySqlite=new MySqlite(this); mySqlite.getWritableDatabase(); } private void initView() { insert= (Button) findViewById(R.id.insert); dele= (Button) findViewById(R.id.dele); query= (Button) findViewById(R.id.query); modify= (Button) findViewById(R.id.modify); insert.setOnClickListener(this); dele.setOnClickListener(this); query.setOnClickListener(this); modify.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.insert: mDao.insert("wangwu", "11111"); break; case R.id.dele: mDao.dele("wangwu"); break; case R.id.modify: mDao.modi("wangwu", "00000"); break; case R.id.query: mDao.query("11111"); break; } }}
最后将数据库导出来,发现修改成功了。
这就是数据库的简答操作。
- 【Android】数据存储之SQLite
- android数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite
- Android之SQLite 数据存储
- Android之SQLite 数据存储
- Android 数据存储之SQLite
- Android数据存储之SQLite
- android数据存储之SQLite
- Android 数据存储之 SQLite
- Android数据存储之Sqlite
- Android数据存储之SQLite
- Android:数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite数据库存储
- Android数据存储之SQLite数据库存储
- kylin配置优先级
- 使树莓派开机运行程序
- CSS样式小技巧
- Linux命令行——vmstat命令详解
- vi /etc/updatedb.conf 搜索文件说明
- Android数据存储之SQLite
- LIS的nlog(n)算法
- 1. Two Sum
- python之路——小购物车程序
- module 和 class 和 def (作用域门)
- python中的特殊函数__call__()以及init,setattr,getattr,delattr
- JAVA 虚拟机,垃圾回收算法
- HDU 6030 DP + 矩阵快速幂
- ACE_Singleton类学习