SQLiteOpenHelper类是一个抽象类,在操作SQLite数据库的时候需要写一个类继承于它,比如:MySqliteOpenHelper
下面是我写的一个SQLiteOpenHelper类:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);----------------------------(1)需要有构造函数
// TODO Auto-generated constructor stub
}
public MySQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version,
DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
arg0.execSQL("create table user(id int,name varchar(20));");-------------------------------(2)创建表结构
//arg0.close();------------------------(3)这个地方不要多此一举,不然会报错,
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
//然后简单的向user表中插入一些数据:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite_demo);
//创建MySQLiteOpenHelper类
mydbHelper = new MySQLiteOpenHelper(SQLiteDemoActivity.this,"myUserDb",null,1);
//通过创建的MySQLiteOpenHelper类,获得SQLiteDatabase
SQLiteDatabase db = mydbHelper.getWritableDatabase();
//实例化待插入数据的内容
cvs = new ContentValues();//------------------创建一个数据内容类
cvs.put("id",1);
try {
cvs.put("name", new String("你好").getBytes("gb2312")); -------------------存储中文需转下格式
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.insert("user",null,cvs);
Toast.makeText(SQLiteDemoActivity.this, "数据插入完毕", Toast.LENGTH_LONG).show();
db.close();
}
//值得注意的是:ContentValues实例类在一次数据库插入过程中只能put数据库表中一行记录
在dos中我们使用adb shell命令进入,找到创建的myUserDb数据库,进入数据库这个时候的命令变成了sqlite3 myUserDb
然后select * from user-------------------------查看数据是否插入。