SqliteDatabase遵循sqlite3规范。除了对数据库的事务进行操作。执行sql语句,还封装了CURD四个类型的方法。
sqlite3官网:http://www.sqlite.org/
创建简单的CURD例子:(对于数据库操作不需要配置任何AndroidManifest.xml权限)
/**
* @author Lean
*/
public class FirstDbOperation {
private Context mContext;
private final String DB_NAME="MyFirstDbStorage";
private final String TABLE_NAME = "'user_info_tab'";
public static String COLUMN_USERNAME="userName";
public static final String COLUMN_USERADDRESS = "userAddress";
public FirstDbOperation(Context context){
this.mContext=context;
}
public SQLiteDatabase OpenOrCreateDBStorage(){
SQLiteDatabase sqlDb=mContext.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
String sql="create table if not exists "+TABLE_NAME+
" ("+COLUMN_USERNAME+" vachar(50),"+COLUMN_USERADDRESS+" vachar(50));";
sqlDb.execSQL(sql);
return sqlDb;
}
public void insertData(SQLiteDatabase sqlDb){
if (sqlDb!=null) {
ContentValues values=new ContentValues();
values.put(COLUMN_USERNAME, "Lean");
values.put(COLUMN_USERADDRESS, "longdong");
sqlDb.insert(TABLE_NAME, "", values);
}
}
public Cursor queryData(SQLiteDatabase sqlDb){
if (sqlDb!=null) {
//String[] columns 该列在cursorAdapter中使用时如果不为null,必须加上 _id
return sqlDb.query(TABLE_NAME,new String[]{COLUMN_USERNAME},null,null,null,null,null);
}
return null;
}
/**
* @return the number of rows affected
*/
public int deleteData(SQLiteDatabase sqlDb){
String whereClause=COLUMN_USERNAME+"=?";
if (sqlDb!=null) {
return sqlDb.delete(TABLE_NAME, whereClause, new String[]{"Lean"});
}
return 0;
}
/**
* @return the number of rows affected
*/
public int updateData(SQLiteDatabase sqlDb){
String whereClause=COLUMN_USERNAME+"=?";
ContentValues values=new ContentValues();
values.put(COLUMN_USERNAME, "newUserName");
if (sqlDb!=null) {
return sqlDb.update(TABLE_NAME, values, whereClause,new String[]{"Lean"});
}
return 0;
}
}
调用如下:
/**
* @author Administrator
*
*/
public class MainActivity extends Activity {
private ServiceConnection mConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
private void initUI() {
findViewById(R.id.insertDbData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
putDataToUserTab();
}
});
findViewById(R.id.queryDbData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
queryDataFromUserTab();
}
});
findViewById(R.id.deleteDbData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
deleteDataFromUserTab();
}
});
findViewById(R.id.updateDbData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
updateDataFromUserTab();
}
});
}
private void putDataToUserTab() {
FirstDbOperation dbOperation=new FirstDbOperation(this);
dbOperation.insertData(dbOperation.OpenOrCreateDBStorage());
}
private void queryDataFromUserTab() {
FirstDbOperation dbOperation=new FirstDbOperation(this);
Cursor cursor=dbOperation.queryData(dbOperation.OpenOrCreateDBStorage());
if (cursor!=null&&cursor.moveToFirst()) {
Log.v("log",cursor.getString(cursor.getColumnIndex(FirstDbOperation.COLUMN_USERNAME)));
while (cursor.moveToNext()) {
Log.v("log",cursor.getString(cursor.getColumnIndex(FirstDbOperation.COLUMN_USERNAME)));
}
}
}
private void deleteDataFromUserTab() {
FirstDbOperation dbOperation=new FirstDbOperation(this);
int effectedLenth=dbOperation.deleteData(dbOperation.OpenOrCreateDBStorage());
Log.v("log","effectedLenth:"+effectedLenth);
}
private void updateDataFromUserTab() {
FirstDbOperation dbOperation=new FirstDbOperation(this);
int effectedLenth=dbOperation.updateData(dbOperation.OpenOrCreateDBStorage());
Log.v("log","effectedLenth:"+effectedLenth);
}
}
查看数据库信息:
1.root手机权限;
2.修改数据库DOCS命令:
>>adb shell
>>su
>>chmod 777
/data/data
/data/data/package_name/data/data/package_name/*
/data/data/package_name/databases/*
3.导出数据库文件;
4.安装并拖动文件到sqlite expert professional;
分享到:
相关推荐
Android四大组件之一ContentProvider自定义Sqlite共享,实现增删查改基本功能
代码有两个项目,一个集合了知识sharepreference,content provider,另一个集合了listview的动态增删改查,有sqlite操作数据的增删改查和content provider操作sqlite的增删改查,经本人亲测项目导入便可运行,这是第...
********************************************** 通过SQLiteDatabase实现自定义ContentProvider增删改查 *********************************************
关于android的数据存储-SQLite-ContentProvider-preferences
自己做的android作业,比较简单,实现电话号码的增删改查,里面的功能实现截图
具体说明已经在Blog里说明,如还有不懂的地方可以给我留言
NULL 博文链接:https://fuchangle.iteye.com/blog/1842305
同我前面的资源一样,我的每个功能的实例都是力图实现最简短话,也就是说只保留实现所关心功能的核心部分。这个实例不讲求大而全的实现...对应于我的博客“How:ContentProvider基本功能核心框架(增删改查)”
filecraft-contentprovider-介绍FileCraft ContentProvider 示例 Android 应用程序。 在 Google Play 商店中与 FileCraft 一起使用。 这是示例插件应用程序的早期版本。 随着我更多地测试和使用它,事情可能会发生...
ContentProvider-Demo内容提供者的Demo
利用contentprovider和contentresolver执行对数据库的增删改查操作,
contentprovider实现数据库的增,删,改,查,自定义组件显示
资源中包含自定义ContentProvider的相关实现的代码(Homework02ContentProvider),以及对应的测试代码(Homework02Test)。 其中任务01生词本作业的相关代码请参照链接:...
本示例结合ContentProvider实现了数据库的增删改查操作 并且扩展性比较好
因为ContentProvider涉及数据的增删查改,当数据量比较大的时候,继续用Parcel做容器效率会比较低,因此它还使用了匿名共享内存的方式。 但是有一个问题是,ContentProvider的提供者进程不再存活时,其他进程通过...
ContentProvider实现数据共享
Android ContentProvider简单实现
该项目的目标是为 iQser GIN 语义中间件 ( ) 的 CSV 文件提供 ContentProvider 插件。 iQser GIN(全球信息网络)平台是一个企业级、高度可扩展的语义中间件,其功能包括数据集成、分析、过程控制和信息检索,包括...
Android应用开发使用ContentProvider以及SQLite实现对数据库的相关操作,可以直接操作数据库,也可以使用ContentProvider来对数据库进行间接操作。
一个ContentProvider类 SQLiteOpenHelper类 每个实体一个Columns类 每个实体一个Cursor类 每个实体一个ContentValues类 每个实体一个Selection类 每个实体一个Model接口 每个实体一个Bean类(可选) 用法 有两种可能...