SQLite数据库

来源:互联网 发布:怎么下载ntfs for mac 编辑:程序博客网 时间:2024/05/26 22:09

SQLite数据库是android系统集成的轻量级数据库,适合移动设备

数据的操作和管理

app的数据库的路径为 data/data/com.android.contacts(应用包名)/databases/

1、通过命令行查看和管理SQLite



注:若adb shell命令无法执行,请检查android sdk环境变量是否配置成功





接下来就可以在命令行执行相应的SQL语句


注:sqlite3 可以在android sdk文件夹/platform-tools文件夹下找到

2、可视化管理工具管理数据库

通过Android Studio里集成的Android Device Monitor管理


进入Android Device Monitor后选择File Expoler


进入data/datacom.android.contacts(要操作的数据库应用包名)/databases/


选择相应的数据库文件然后导出


使用SqliteBrowser打开数据库进行增、删、改、查


最后导入数据库,完成



3、通过代码操作数据库

通过代码操作数据库主要要使用到SQLiteOpenHelper类SQLiteDatabase类

创建操作数据库

(1)新建一个类继承自SQLiteOpenHelper类,并实现其中的构造方法、onCreate()方法和onUpgrade()方法

public class MySQLiteOpenHelper extends SQLiteOpenHelper {    final static String DATABASE_NAME = "user";//数据库名    final static int DATABASE_VERSION = 1;//数据版本 onUpgrade()方法中会用到    public MySQLiteOpenHelper(Context context) {        super(context, DATABASE_NAME, null, DATABASE_VERSION);    }    /**     * 在数据库中创建表,onCreate()只会在创建时执行一次     *     * @param sqLiteDatabase     */    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        String createTable = "create table user(" +                "id Integer not null autoincrement primary key," +                "username varchar(10)," +                "password varchar(6)" +                ")";        sqLiteDatabase.execSQL(createTable);    }    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {    }}

(2)在需要操作数据库的Acitivity中实例化SQLiteDataBase类

public class MainActivity extends AppCompatActivity {    SQLiteDatabase mSqLiteDatabase;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //=============实例化QLiteOpenHelper        SQLiteOpenHelper sqLiteOpenHelper = new MySQLiteOpenHelper(this);        //通过获取sqLiteOpenHelper.getReadableDatabase()获得SQLiteDatabase实例时,如果        //数据库存在就执行连接访问数据库,若数据库不存在则创建相应的数据库,然后访问连接        mSqLiteDatabase = sqLiteOpenHelper.getReadableDatabase();        //SQLiteDatabase sqLiteDatabase = sqLiteOpenHelper.getWritableDatabase();        // sqLiteOpenHelper.getReadableDatabase()和sqLiteOpenHelper.getWritableDatabase()的区别        //getReadableDatabase当内存空间不足时,属性为只读,不能写入数据导致程序崩溃,        // 而getWritableDatabase可以继续写入,可能导致程序崩溃        //因此选择getReadableDatabase()        //通过sqLiteDatabase实例就可以对数据库进行相关操作    }}


(3)通过SQLiteDatabase实例执行SQL语句 操作数据库
在android中操作数据库可以通过两种方式:SQL语句android封装好的方法

①SQL语句

  private void insertData() {        String name = mUser.getText().toString();//mUser是一个EditText控件,这是获取mUser的内容        String password = mPassword.getText().toString();//同上        String insertSql = "insert into user(name,password) values(\"" + name + "\",\"" + password + "\")";        //  Log.v("SQL语句", insertSql);        mSqLiteDatabase.execSQL(insertSql);//mSqLiteDatabase为上面获取的SQLite实例        Toast.makeText(DataBaseManageActivity.this, "添加数据成功", Toast.LENGTH_LONG).show();    }    private void deleteData() {        String deleteSql = "delete from user where name=\"" + mUser.getText() + "\"";        mSqLiteDatabase.execSQL(deleteSql);        Toast.makeText(DataBaseManageActivity.this, "删除数据成功", Toast.LENGTH_LONG).show();    }

②android封装好的方法

/**     * 安卓代码数据库添加操作     */    private void androidInsertData() {        //要添加的数据        ContentValues contentValues = new ContentValues();        contentValues.put("name", mUser.getText().toString());        contentValues.put("password", mPassword.getText().toString());        mSqLiteDatabase.insert("user", null, contentValues);           }    /**     * 安卓代码数据库删除操作     */    private void androidDeleteData() {        //参数:表名,删除条件,删除的值        mSqLiteDatabase.delete("user", "name=?", new String[]{mUser.getText().toString()});    }    private void androidUpdateData() {        ContentValues contentValues = new ContentValues();        contentValues.put("name", mUser.getText().toString());        contentValues.put("password", mPassword.getText().toString());//参数:String 表名,Content 修改的值,String 需要修改的记录,String[] 需要修改的记录的值        mSqLiteDatabase.update("user", contentValues, "name=?", new String[]{"zhangsan"});        Toast.makeText(DataBaseManageActivity.this, "修改数据成功", Toast.LENGTH_LONG).show();    }

数据库版本更新

修改版本号

final static int DATABASE_VERSION = 2;//修改版本号,新版本号要大于老版本号,版本号降级会报错无法运行
在onUpgrade()方法中添加要更新的代码,如:

  @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {        //i为oldVerrsion 老版本号 i1为newVerrsion 新版本号        //当版本号发生改变 newVerrsion>oldVerrsion时会执行onUpgrade()方法        switch (i) {            case 1:                            case 2:        }    }



0 0
原创粉丝点击