sqlite 数据库是android自带的一个轻量级数据库,使用起来很方便,这个demo介绍了其基本的增删查改方法。
demo:下载地址。
运行截图:
源代码:MainActivity.java
package fk.androiddemo_008;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button createDatabaseBut,updateDatabaseBut,insertBut,queryBut,deleteBut,updateBut;
DatabaseHelper dbHelper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createDatabaseBut=(Button)findViewById(R.id.creatDatabaseBut);
createDatabaseBut.setOnClickListener(new createDatabaseButListener());
updateDatabaseBut=(Button)findViewById(R.id.updateDatabaseBut);
updateDatabaseBut.setOnClickListener(new updateDatabaseButListener());
insertBut=(Button)findViewById(R.id.insertBut);
insertBut.setOnClickListener(new insertButListener());
queryBut=(Button)findViewById(R.id.queryBut);
queryBut.setOnClickListener(new queryButListener());
deleteBut=(Button)findViewById(R.id.deleteBut);
deleteBut.setOnClickListener(new deleteButListener());
updateBut=(Button)findViewById(R.id.updateBut);
updateBut.setOnClickListener(new updateButListener());
}
class createDatabaseButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
//创建一个databaseHelper对象
dbHelper=new DatabaseHelper(MainActivity.this,"FengKui");
//调用databaseHelper中的getReadableDatabase()或getWritableDatabase()方法创建数据库
db=dbHelper.getReadableDatabase();
}
}
class updateDatabaseButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
dbHelper=new DatabaseHelper(MainActivity.this,"FengKui",2);
//注意数据库的版本只能升不能降,否则会出错
db=dbHelper.getReadableDatabase();
}
}
class insertButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
//创建ContentValues对象
ContentValues values=new ContentValues();
//向values中放键值对,键名即表的列名,值为对应列的值
values.put("id", 001);
values.put("name", "Tom");
//调用insert方法,将数据插入表中
db.insert("stu_info", null, values);
}
}
class updateButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
ContentValues values=new ContentValues();
values.put("name", "TomNew");
//第三个参数是SQ语句中where子句,?为占位符,其值有后面的数组提供,所以占位符的个数等于数组的长度
db.update("stu_info", values, "id=?", new String[]{"001"});
}
}
class queryButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
//(表名,查询的列名,where子句,占位符的值,null,null,null)
Cursor cursor=db.query("stu_info",new String[]{"id","name"},"id=?",new String[]{"001"},null,null,null);
while(cursor.moveToNext()){//cursor最初指向表的第一条数据的上方
//先得到name列的序号,再用序号得到这列的值
String name=cursor.getString(cursor.getColumnIndex("name"));
System.out.println("ID为001的NAME是:"+name);
}
}
}
class deleteButListener implements View.OnClickListener {
@Override
public void onClick(View v) {
db.delete("stu_info","id=?",new String[]{"001"});
}
}
}
package fk.androiddemo_008;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Administrator on 2016/9/13.
*/
public class DatabaseHelper extends SQLiteOpenHelper {
static int VERSION=1;
//第一个构造函数
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);//必须有
}
//第二个构造函数(数据库版本更新后)
public DatabaseHelper(Context context, String name, int version) {
this(context, name, null, version);
}
//第三个构造函数(数据库版本没变过)
public DatabaseHelper(Context context, String name) {
this(context, name, VERSION);
}
@Override
//只在第一次创建数据库时执行
public void onCreate(SQLiteDatabase db) {
System.out.println("create a database");
//执行SQL语句,生成一张表
db.execSQL("create table stu_info(id int,name varchar(20))");
}
@Override
//在数据库版本更新时调用(更新版本号大于当前版本)
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("update a database");
}
}
PS:如何查看虚拟机中的Sqlite数据库数据
android sdk 下的 adb.exe 工具可以帮助我们,不过需要一些简单的 linux 命令,注意 adb.exe位于***\sdk\platform-tools中,要在那里运行cmd,或把其路径加入path系统给环境变量
1,在android sdk安装目录下的platform-tools文件夹下使用cmd打开命令行窗口,输入 adb shell
2,利用 ls 和 cd 命令进入到:data/data/app工程名/databases 下,如果提示没有权限,请输入su,切换到root用户
3,输入: sqlite3 数据库名 (打开我们的数据库,然后就是使用数据库语言了)
4,.schema (显示数据库里的表)
5,select * from 表名;(显示表中的数据,不要忘记后面的分号)
下面是一些常用的命令:
1,运行cmd进入命令窗口2,输入adb shell进入Linux命令行
3, su (切换到root用户,提高权限)
4,ls (显示当前目录下有哪些文件和文件夹)
5,ls -l(详细显示)
6,cd 文件夹名 (进入相应文件夹:data/data/app工程名/databases)
7,sqlite3 数据库名(进入SQLite命令环境操作相应数据库)
8,.schema(显示数据库中的表)
9,select * from 表名;(显示表中的数据,不要忘记后面的分号)
10,.quit(退出sqlite3)
11,cd ..(返回上一级目录)
12,rm 文件名(删除文件)
13,rm -r 文件夹名(删除对应文件夹和里面的文件)
14,rm -f *(清空当前目录下的文件和文件夹)
15,delete from 表名;(清空表中的数据)