数据存储到SQLite数据库中
2018-02-27 本文已影响9人
在下陈小村
数据存储到SQLite中需要重写一个SQLiteOpenHelper类,包含创建和升级两个方法,具体代码如下:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private Context mContext;
private String CREATE_BOOK="create table book(id integer primary key autoincrement,author text,price real,pages integer,name text)";
private String CREATE_CATEGORY="create table category(id integer primary key autoincrement,category_name text,category_code integer)";
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(CREATE_BOOK);
db.execSQL(CREATE_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);
}
}
当然还有增删改查方法,getWritableDatabase()的作用是如果数据库不存在则创建一个,如果存在则打开已创建的数据库
public class SQLiteActivity extends AppCompatActivity implements View.OnClickListener{
private MyDatabaseHelper myDatabaseHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
myDatabaseHelper = new MyDatabaseHelper(SQLiteActivity.this,"Book.db",null,4);
findViewById(R.id.createDB).setOnClickListener(this);
findViewById(R.id.insert).setOnClickListener(this);
findViewById(R.id.update).setOnClickListener(this);
findViewById(R.id.delete).setOnClickListener(this);
findViewById(R.id.query).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.createDB:
myDatabaseHelper.getWritableDatabase();
break;
case R.id.insert:
db= myDatabaseHelper.getWritableDatabase();
db.execSQL("insert into book (name,author,pages,price) values (?,?,?,?)",new String[]{"第一行代码","郭林","600","50"});
db.execSQL("insert into book (name,author,pages,price) values (?,?,?,?)",new String[]{"第二行代码","郭林","700","60"});
// ContentValues values=new ContentValues();
// values.put("name","第一行代码");
// values.put("author","郭林");
// values.put("pages","600");
// values.put("price","50");
// db.insert("book",null,values);
Toast.makeText(SQLiteActivity.this,"添加数据成功",Toast.LENGTH_SHORT).show();
break;
case R.id.update:
db= myDatabaseHelper.getWritableDatabase();
db.execSQL("update book set price=? where name=?",new String[]{"30","第一行代码"});
Toast.makeText(SQLiteActivity.this,"修改数据成功",Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
db= myDatabaseHelper.getWritableDatabase();
db.execSQL("delete from book where pages>?",new String[]{"600"});
Toast.makeText(SQLiteActivity.this,"删除数据成功",Toast.LENGTH_SHORT).show();
break;
case R.id.query:
db= myDatabaseHelper.getWritableDatabase();
Cursor cursor=db.rawQuery("select * from book",null);
if (cursor.moveToFirst()){
do {
String name=cursor.getString(cursor.getColumnIndex("name"));
String author=cursor.getString(cursor.getColumnIndex("author"));
int pages=cursor.getInt(cursor.getColumnIndex("pages"));
double price=cursor.getDouble(cursor.getColumnIndex("price"));
Toast.makeText(SQLiteActivity.this,name+author+pages+price,Toast.LENGTH_SHORT).show();
}while (cursor.moveToNext());
}
Toast.makeText(SQLiteActivity.this,"查询数据成功",Toast.LENGTH_SHORT).show();
break;
}
}
}