本人是菜鸟,还在校读书,目前只是简单写写略微粗糙,后续还会修正更新的。
什么是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;
}
}
}
最后将数据库导出来,发现修改成功了。
这就是数据库的简答操作。