sqlite适合移动设备的数据存储,有处理速度快,占用资源少等优点,不需要安装部署,内嵌到程序中作为其一部分.http://www.sqlite.org/
sqlite的数据库文件位于/data/data/your-app-name/databases目录下.
使用数据库最基本就是增删改查操作.下面的示例是使用sqlite进行增删改查的操作.
我们需要一个辅助类继承sqliteOpenHelper类
view plain
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);
}
}
view plain
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();
db.execsql("insert into user_info(name,vip) values('user1',1)");
ContentValues values = new ContentValues();
values.put("name","user2");
values.put("vip","2");
db.insert("user_info",values);
//更新level=2 的数据
values.clear();
values.put("name","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","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窗口
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显示表的结构.
.exit 退出.
我们也可以使用txt导入数据,只要规定要格式就是可以.
1.创建一个txt
注意:文本内不要任何的空格,保存任意文件名.我这里保存user_info.
2.将user_info.txt放在相应的databases目录下.
显示目录.
3.执行命令
至此导入数据成功.
原文链接:https://www.f2er.com/sqlite/201297.html