Android之SQLite3命令行管理数据库

来源:互联网 发布:js获取当前电脑ip地址 编辑:程序博客网 时间:2024/05/18 01:14

SQLite适合移动设备的数据存储,有处理速度快,占用资源少等优点,不需要安装部署,内嵌到程序中作为其一部分.http://www.sqlite.org/

SQLite的数据库文件位于/data/data/your-app-name/databases目录下.

使用数据库最基本就是增删改查操作.下面的示例是使用SQLite进行增删改查的操作.

我们需要一个辅助类继承SQLiteOpenHelper类

package com.sumq;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class MySQLiteHelper extends SQLiteOpenHelper{public MySQLiteHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}/* *当数据库被创建时,首次执行该方法 *一般将创建表等初始化操作放在该方法中执行  */@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL("create table if not exists user_info(id integer primary key,name varchar,vip integer)");}/*当版本升级时调用该函数 *参数一为要更新的数据库 *参数二传入老的版本号 *参数三传入新的版本号  */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}/* *看需要,该方法在每次打开数据库时被调用  */@Overridepublic void onOpen(SQLiteDatabase db) {// TODO Auto-generated method stubsuper.onOpen(db);}}

package com.sumq;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.widget.TextView;public class UISQLiteActivity extends Activity {TextView tv;MySQLiteHelper mySQLiteHelper;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        tv = (TextView)findViewById(R.id.tv);        mySQLiteHelper = new MySQLiteHelper(this, "test.db", null, 1);        insertAndUpdateData(mySQLiteHelper);        String result = queryData(mySQLiteHelper);        tv.setText("名字\t等级\t"+result);    }        private void insertAndUpdateData(MySQLiteHelper mySQLiteHelper){    //获取数据库对象    SQLiteDatabase db = mySQLiteHelper.getWritableDatabase();    //第一种插入数据库的方法直接写sql语句    db.execSQL("insert into user_info(name,vip) values('user1',1)");    //第二种调用insert方法    ContentValues values = new ContentValues();    values.put("name", "user2");    values.put("vip", "2");    db.insert("user_info", null, values);    //更新level=2 的数据    values.clear();    values.put("name", "user2");    values.put("vip", "3");    db.update("user_info", values, "vip = ?", new String[]{"2"});        db.close();    }        private String queryData(MySQLiteHelper mySQLiteHelper){    String result ="";    SQLiteDatabase db = mySQLiteHelper.getReadableDatabase();    Cursor cursor = db.query("user_info", null, null, null, null, null, "id asc");    while (cursor.moveToNext()) {    result = result+cursor.getString(cursor.getColumnIndex("name"))+"    ";    result = result+cursor.getInt(cursor.getColumnIndex("vip"))+"    \n";}    cursor.close();    db.close();    return result;    }        @Override    protected void onDestroy() {        SQLiteDatabase db =mySQLiteHelper.getWritableDatabase();        db.delete("user_info", "1", null);    super.onDestroy();    }}

执行程序结果显示


上面提到我们的数据库保存的位置位于/data/data/com.sumq/databases/test.db

下面我们就使用adb shell命名查询上面的示例执行完创建的数据库

1.打开"开始"->"运行"输入cmd显示dos窗口

2.依次执行命名进入我们的数据库文件位置下.

adb shell命令是我们已经配置好环境变量 我自己的sdk路径是这样的 D:\Program Files\android-sdk-windows\tools所以需要注意自己的是否已经配置好环境变量否则这个命令不能被识别.

cd data是进入相应的文件夹

ls 显示文件夹的所有文件 加上参数   -l 显示文件的显示信息

test.db是我们示例创建的数据库.现在输入命令进入数据库操作

输入slqite3 test.db 直接进入我们的数据库,可以发现左边的显示sqlite>就是我们可以进入到数据库操作命令行了.

.table显示数据库下的所有表.  android_metadata是系统表. 不是我们示例创建的表. 先不管它

.schema user_info显示表的结构.

.dump user_info显示表的结构和内容.

.exit 退出.


我们也可以使用txt导入数据, 只要规定要格式就是可以.

1.创建一个txt

注意:文本内不要任何的空格,保存任意文件名.我这里保存user_info.

2.将user_info.txt放在相应的databases目录下.

显示目录.

3.执行命令

至此导入数据成功.


当然除了使用命令,也有图形的客户端软件.比如SQLiteSpy.或者火狐的SQLite Manager都可以查看数据库.

原创粉丝点击