Android之SQLite3命令行管理数据库

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 } /* *当数据库被创建时,首次执行该方法 *一般将创建表等初始化操作放在该方法中执行 */ @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table if not exists user_info(id integer primary key,name varchar,vip integer)"); } /*当版本升级时调用该函数 *参数一为要更新的数据库 *参数二传入老的版本号 *参数三传入新的版本号 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } /* *看需要,该方法在每次打开数据库时被调用 */ @Override public void onOpen(SQLiteDatabase db) { // TODO Auto-generated method stub super.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都可以查看数据库.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值