Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。
1、要使用Android SQLite必须要继承一个类——SQLiteOpenHelper。
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
/**
* 构造方法
* @param context 上下文
* @param name 数据库的名称
* @param factory 游标工厂 一般默认为null
* @param version 数据库版本
*/
public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//只有数据库创建的时候调用,适合创建数据库的表结构
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table contact(_id integer primary key autoincrement ," +
"cname varchar(10), telephone varchar(10))");
}
//只有数据库的版本更新的时候执行,适合修改数据库的表的结构
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.数据库操作工具类。
public class DBUtils {
private static MySQLiteOpenHelper helper;
private static DBUtils dbUtils ;
//表的名称
public static final String table_contact = "contact" ;
private SQLiteDatabase db ;
public DBUtils(Context context) {
helper = new MySQLiteOpenHelper(context,"contacts.db",null,1);
db = helper.getWritableDatabase();
}
/**
* 单利模式创建数据库
* @param context
* @return
*/
public static synchronized DBUtils getInstance(Context context){
if(dbUtils == null){
dbUtils = new DBUtils(context);
}
return dbUtils;
}
/**
* 增加数据
* @param name 联系人名称
* @param number 电话号码
*/
public void addData(String name ,String number){
ContentValues values = new ContentValues();
values.put("cname", name); // KEY 是列名,vlaue 是该列的值
values.put("telephone", number); // KEY 是列名,vlaue 是该列的值
// 参数一:表名,参数三,是插入的内容
// 参数二:只要能保存 values 中是有内容的,第二个参数可以忽略
db.insert(table_contact, null, values);
}
/**
* 根据联系人名字删除联系人
* @param name 联系人名字
*/
public void deleteData(String name){
String whereClause="cname = ?"; //条件
String[] whereArgs={name}; //条件参数
db.delete(table_contact,whereClause,whereArgs);
}
/**
* 根据联系人名称修改电话号码
* @param name 联系人
* @param number 号码
*/
public void updateData(String name ,String number){
ContentValues values = new ContentValues();
values.put("telephone",number);
String whereClause = "name = ?"; //条件
String[] whereArgs = {name} ; //条件参数
db.update(table_contact,values,whereClause,whereArgs);
}
/**
* 查询所有数据
*/
public void queryData(){
String[] columns={"cname","telephone"};
String selection = null; //选择的条件
String[] selectionArgs = null; //选择条件的参数
String groupBy = null; //组别
String having = null; //传递NULL将导致所有行组被包含,并且在不使用行分组时需要.。
String orderBy = null; //排序
Cursor cursor = db.query(table_contact, columns, selection, selectionArgs, groupBy, having, orderBy);
while(cursor.moveToNext()){
String cname = cursor.getString(cursor.getColumnIndex("cname"));
String telephone = cursor.getString(cursor.getColumnIndex("telephone"));
System.out.println("名字:"+cname+" ; 电话:"+telephone);
}
}
}
3.在用到的数据库的代码中调用数据库操作。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
DBUtils dbUtils = DBUtils.getInstance(this);
//添加数据
dbUtils.addData("zhangkefeng","18626255712");
dbUtils.addData("xiaoqiang","18626255712");
//查询数据
dbUtils.queryData();
//删除数据
dbUtils.deleteData("zhangkefeng");
//修改数据
dbUtils.updateData("xiaoqiang","18137668837");
}
}
可以在模拟器上运行,在data/data 目录下找到 你的包名 下的database文件夹里找到自己的数据库