1、为什么要用SQLite?
SharedPreferences是以xml形式存储数据的,只适合储存基本数据类型的数据,文件存储的内容在读取解析时相对复杂;当数据量大,结构复杂时,如果使用SharedPreferences和文件储存对数据的操作将变得非常复杂,容易出错,效率低下,Android提供了SQLite数据存储,帮助我们解决这些问题。
2、什么是SQLite?
3、如何创建数据库和数据表?
新建继承类SQLiteOpenHelper;
实现其中的构造方法,重写onCreate方法和onUpgrade方法;
实例化SQLiteOpenHelper的子类对象;
调用getReadableDatabase方法或者getWritaDatabase方法。
这里以一个学生列表举例:
package com.example.sqliteapplication; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class MySqiliteHelper extends SQLiteOpenHelper{ private String sql = "create table student(" + "id integer primary key autoincrement not null," + "name text," + "age integer" + ")"; public MySqiliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(sql);//创建数据库及数据表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //不需要更新数据时,什么都不用写 } }
4、如何添加数据?
创建StudentActivity,在里面写一个方法addStudent(),内容如下:
private void addStudent() { String name = name_et.getText().toString(); int age = Integer.parseInt(age_et.getText().toString()); ContentValues values = new ContentValues(); values.put("name",name); values.put("age",age); MySqiliteHelper mySqiliteHelper = new MySqiliteHelper(this,"student_db",null,1); SQLiteDatabase sqLiteDatabase = mySqiliteHelper.getWritableDatabase(); sqLiteDatabase.insert("student",null,values); }
5.如何删除数据?
private void delectstudent() { String name= nameET.getText().toString(); int age= Integer.parseInt(ageET.getText().toString()); MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1); SQLiteDatabase db=mysqliteHelper.getReadableDatabase(); db.delete("student","name=?",new String[]{name}); }
6.如何修改数据?
private void updatestudent() { String name= nameET.getText().toString(); int age= Integer.parseInt(ageET.getText().toString()); MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1); SQLiteDatabase db=mysqliteHelper.getReadableDatabase(); ContentValues values=new ContentValues(); values.put("name","zyx"); db.update("student",values,"name=? and age=?",new String[]{name,age+""}); }
7.如何查询数据?
private void selectstudent() { MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1); SQLiteDatabase db=mysqliteHelper.getReadableDatabase(); Cursor cursor=db.query("student",null,null,null,null,null,null); cursor.moveToFirst(); mysqlList.clear(); do{ int id=cursor.getInt(cursor.getColumnIndex("id")); String name=cursor.getString(cursor.getColumnIndex("name")); int age=cursor.getInt(cursor.getColumnIndex("age")); MySQL s=new MySQL(name,id,age); mysqlList.add(s); Log.e("selectstudent",name+"-"+age+"-"); }while (cursor.moveToNext()); sqladapter=new SQLAdapter(SQLActivity.this,mysqlList); listView.setAdapter(sqladapter); }
文章来源: SQLite