-
- 创建数据库
- 主函数
- 创建SQLiteOpenHelper类
- 布局
- 添加数据
- 更新数据
- 删除数据
- 查询数据
- MainActivity
- activity_mainxml
创建数据库
首先我们要知道SQLiteOpenHelper是一个抽象类,这意味着如果我们要使用它的话,就需要创建一个自己的帮助类去继承它,SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建,升级数据库的逻辑。
主函数
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mButtonCreateDB;
private Button mButtonInsert;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteOpenHelper helper=new SQLiteOpenHelper(getApplicationContext(),"My_First_DB1.db");
db=helper.getWritableDatabase();
mButtonCreateDB= (Button) findViewById(R.id.button_db);
mButtonCreateDB.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_db:
Toast.makeText(MainActivity.this,"创建了数据库",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
创建SQLiteOpenHelper类
public class SQLiteOpenHelper extends android.database.sqlite.SQLiteOpenHelper {
public SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) {
super(context,name,factory,version);
}
public SQLiteOpenHelper(Context context,String name){
this(context,null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists user(id integer not null primary key autoincrement,name varchar(20),password varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
}
}
布局
<Button
android:id="@+id/button_db"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建数据库"/>
添加数据
主函数
case R.id.button_insert:
ContentValues value=new ContentValues();
value.put("name","zhangsan");
value.put("password","123456");
db.insert("user",value);
break;
SQLiteDatabase中提供了一个insert()方法,专门用于添加数据,它接收三个参数,第一个参数是表名,第二个参数用于在未指定添加数据的情况下给某些可为空的列自动赋值null,第三个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。
更新数据
主函数
case R.id.button_update:
ContentValues values=new ContentValues();
values.put("password","abcdef");
db.update("user",values,"name=?",new String []{"zhangsan"});
break;
SQLiteDatabase中提供了一个update()方法用于对数据进行更新这个方法接收四个参数,第一个是表名,第二个参数是ContentValues对象,把更新数据在这里组装进去,,第三个、四个参数是用来约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
删除数据
主函数
case R.id.button_delete:
db.delete("user",new String []{"zhangsan"});
Toast.makeText(MainActivity.this,"删除了名称是张三的数据",Toast.LENGTH_SHORT).show();
break;
和更新数据是类似的用法。
查询数据
主函数
case R.id.button_select:
Cursor cursor=db.query("user","id desc","3,4");
cursor.moveToFirst();
while(!cursor.isAfterLast()){
String name=cursor.getString(cursor.getColumnIndex("name"));
String password=cursor.getString(cursor.getColumnIndex("password"));
Log.d("cursor","用户名"+name+"密码"+password);
cursor.moveToNext();
}
break;
虽然query()方法的参数非常多,但是多数情况下值需要传入少数的几个参数就可以完成查询操作了,调用query()方法后会返回一个Cursor对象,查询到的 所有的数据都将从这个对象中取出。
query()方法参数 |
对应SQL部分 |
描述 |
|