Android之ContentValue分析

ContentValues是一个基于HashMap封装的类,常用于ContentProvider相关开发中,它与HashMap主要区别在于:前者只能存储基本类型的数据,等同于HashMap<String,基本数据类型>

源码:

具体用法: 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 设置URI
        Uri uri_user = Uri.parse("content://com.fly.myprovider/user");

        // 插入表中数据
        ContentValues values = new ContentValues();
        values.put("_id", 3);
        values.put("name", "lvxiangan");

        // 获取ContentResolver
        ContentResolver resolver =  getContentResolver();
        // 通过ContentResolver 根据URI 向ContentProvider中插入数据
        resolver.insert(uri_user,values);

 

连接数据库的代码需要在 Android 应用程序的后端服务器上运行。常用的数据库包括 MySQL, SQLite, PostgreSQL 等。以下是一个使用 SQLite 数据库的示例代码,供参考: 1. 添加依赖库 在 app 的 build.gradle 文件中添加以下依赖库: ``` dependencies { implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' implementation 'com.squareup.okhttp3:okhttp:3.8.0' } ``` 2. 创建数据库和表 ``` public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "mytable"; private static final String COLUMN_ID = "id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_AGE = "age"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String query = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT, " + COLUMN_AGE + " INTEGER)"; db.execSQL(query); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } ``` 3. 连接数据库 ``` public class DBManager { private DBHelper dbHelper; private Context context; private SQLiteDatabase database; public DBManager(Context c) { context = c; } public DBManager open() throws SQLException { dbHelper = new DBHelper(context); database = dbHelper.getWritableDatabase(); return this; } public void close() { dbHelper.close(); } public void insert(String name, int age) { ContentValues contentValue = new ContentValues(); contentValue.put(DBHelper.COLUMN_NAME, name); contentValue.put(DBHelper.COLUMN_AGE, age); database.insert(DBHelper.TABLE_NAME, null, contentValue); } public Cursor fetch() { String[] columns = new String[] { DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME, DBHelper.COLUMN_AGE }; Cursor cursor = database.query(DBHelper.TABLE_NAME, columns, null, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); } return cursor; } } ``` 4. 在 Activity 中使用 ``` public class MainActivity extends AppCompatActivity { private DBManager dbManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbManager = new DBManager(this); dbManager.open(); dbManager.insert("John", 30); Cursor cursor = dbManager.fetch(); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_NAME)); int age = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_AGE)); Log.d("TAG", "Name: " + name + ", Age: " + age); } while (cursor.moveToNext()); } dbManager.close(); } } ``` 注意,以上代码仅供参考,需要根据自己的实际需求进行修改和适配。同时,在实际开发中,为了保证数据安全和隐私,需要对数据库连接进行加密和权限控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值