加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ContentProvider-SqliteDatabase实现增删查改(1)

发布时间:2020-12-12 20:02:26 所属栏目:百科 来源:网络整理
导读:SqliteDatabase遵循sqlite3规范。除了对数据库的事务进行操作。执行sql语句,还封装了CURD四个类型的方法。 sqlite3官网: http://www. sqlite .org/ 创建简单的CURD例子:(对于数据库操作不需要配置任何AndroidManifest.xml权限) /** * @author Lean */pu

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);
		}
		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,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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读