安卓为了更好的管理数据库,它向我们提供了一个SQLiteOpenHelp帮助类,SQLiteOpenHelp它是一个抽象类,如果要使用它就要写一个类继承它,其中有两个方法,onCreate()和onUpgrade()方法,一个是实现创建,另一个实现升级数据库。SQLiteOpenHelp中有两个非常重要的实例方法,getReadableDatabase()和getWritableDatabase(),这两个方法都可以创建和打开数据库
1.创建数据库,首先创建一个类继承SQLiteOpenHelp
2.以字符串形式写出创建表的语句
3.在onCreate()方法中执行db.execSQL(创建的字符串)方法来执行创建表的语句
4.注意:如果你创建了一个表在添加表进行创建时候,将无法进行创建,这时候我们怎么办??
我们在创建的类中还有一个方法没有用到,那就是数据库更新方法,我们可以在里面执行删除语句,如果创建了一个表我们在创建的时候删除原来的表。
db.execSQL("drop table if exists +创建的表名")
5.我们定义好了可是怎么执行呢??
这个简单只要在MainActivity中将我们定义的参数1改为2就ok了。
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREAT_BOOK = "create table Book( auther text," + "price real ," + "pages integer," + "name text)"; public static final String CREAT_CATEGORY = "create table Category(id integer primary key autoincrement," + "category_name text," + "category_code integer)"; private Context mContext; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); mContext = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREAT_BOOK); db.execSQL(CREAT_CATEGORY); Toast.makeText(mContext,"成功",Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //如果有重名的数据库就删除 db.execSQL("drop table if exists Book"); db.execSQL("drop table if exists Category"); onCreate(db); }
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelpe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button seave= (Button) findViewById(R.id.seave);
dbHelpe = new MyDatabaseHelper(this,"BookStore.db",null,2);
seave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建数据库
dbHelpe.getWritableDatabase();
}
});
通过上面的代码我们创建好了数据库,下面我们向数据库中插入数据
1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取
2.创建ContentValuer对象,然后用此对象调用put()添加对象
add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SQLiteDatabase db = dbHelpe.getReadableDatabase(); ContentValues values = new ContentValues(); values.put("auther", "haha"); values.put("price", 19.9); values.put("pages", 90); values.put("name", "Tom"); db.insert("Book", null, values); values.clear(); values.put("auther", "hehe"); values.put("price", 30.7); values.put("pages", 20); values.put("name", "LiSi"); db.insert("Book", null, values); Toast.makeText(getApplicationContext(), "Succes", Toast.LENGTH_SHORT).show(); } });
2.更新数据
1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取
2.数据重组
3.最后调用updata()里面4个参数第一个为表名,二,ContentValuer对象,3是需要修改的条件,4,建立一个数组给要改的条件值
Button update = (Button) findViewById(R.id.update); update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SQLiteDatabase db = dbHelpe.getReadableDatabase(); ContentValues values = new ContentValues();//重新组装 values.put("auther", "aaaa"); db.update("Book", values, "name = ?", new String[]{"LiSi"}); } });
3.查看数据库内容
Button find = (Button) findViewById(R.id.find); find.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SQLiteDatabase db = dbHelpe.getReadableDatabase(); //查询表中内容 Cursor cursor = db.query("Book", null, null, null, null, null, null); if (cursor.moveToFirst()) {//判断指针是否在一行的开头 do {
//根据键值获取值 String name = cursor.getString(cursor.getColumnIndex("name")); String auther = cursor.getString(cursor.getColumnIndex("auther")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); Float price = cursor.getFloat(cursor.getColumnIndex("price")); Log.d("aaa", name); Log.d("aaa", auther); Log.d("aaa", String.valueOf(pages)); Log.d("aaa", String.valueOf(price)); } while (cursor.moveToNext());//向下一行移动 } cursor.close(); } });