本篇文章基于上一篇文章:点击打开链接
上一篇文章讲了如何创建和更新SQLite数据库,这篇文章就来讲一下对SQLite数据库的CURD操作吧。android中为我们操作数据提供了一系列的方法,先来看看如何向表中添加数据吧。首先通过getWritableDatabase()方法获得一个SQliteDatabase实例,然后在通过ContentValues组装数据,最后通过SQLiteDatabase实例的insert()方法添加数据。
activity_main.xml中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/createDatabase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create Database"
android:textAllCaps="false"/>
<Button
android:id="@+id/addData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add Data"
android:textAllCaps="false"/>
</LinearLayout>
MainActivity中的代码如下:
package com.tangliang.sqlitedatabase;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper myDatabaseHelper;
private Button createDatabase;
private Button addData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDatabaseHelper = new MyDatabaseHelper(this, "Student.db", null, 2);
createDatabase = (Button) findViewById(R.id.createDatabase);
addData = (Button) findViewById(R.id.addData);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDatabaseHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "tangliang");
values.put("age", 21);
db.insert("Student", null, values);
values.clear();
}
});
}
}
接下来我们看看如何修改表中的数据 ,修改数据和添加数据基本差不多,就是把insert()方法换成了update()方法。
activity_main.xml中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/createDatabase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create Database"
android:textAllCaps="false"/>
<Button
android:id="@+id/addData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/updateData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Data"
android:textAllCaps="false"/>
</LinearLayout>
MainActivity中的代码如下:
package com.tangliang.sqlitedatabase;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper myDatabaseHelper;
private Button createDatabase;
private Button addData;
private Button updateData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDatabaseHelper = new MyDatabaseHelper(this, "Student.db", null, 2);
createDatabase = (Button) findViewById(R.id.createDatabase);
addData = (Button) findViewById(R.id.addData);
updateData = (Button) findViewById(R.id.updateData);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDatabaseHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "tangliang");
values.put("age", 21);
db.insert("Student", null, values);
values.clear();
}
});
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 18);
db.update("Student", values, "name = ?", new String[] {"tangliang"});
}
});
}
}
这样,数据便更新成功了,可以通过adb工具进行查看。
接下来再接着看下如何删除数据吧,删除数据也是大同小异,只是换成了delete()方法而已。
activity_main.xml中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/createDatabase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create Database"
android:textAllCaps="false"/>
<Button
android:id="@+id/addData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/updateData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/deleteData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Delete Data"
android:textAllCaps="false"/>
</LinearLayout>
MainActivity中的代码如下:
package com.tangliang.sqlitedatabase;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper myDatabaseHelper;
private Button createDatabase;
private Button addData;
private Button updateData;
private Button deleteData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDatabaseHelper = new MyDatabaseHelper(this, "Student.db", null, 2);
createDatabase = (Button) findViewById(R.id.createDatabase);
addData = (Button) findViewById(R.id.addData);
updateData = (Button) findViewById(R.id.updateData);
deleteData = (Button) findViewById(R.id.deleteData);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDatabaseHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "tangliang");
values.put("age", 21);
db.insert("Student", null, values);
values.clear();
}
});
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 18);
db.update("Student", values, "name = ?", new String[] {"tangliang"});
}
});
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
db.delete("Student", "name = ?", new String[]{"tangliang"});
}
});
}
}
最后来看一下如何查询数据吧,查询要稍微复杂一些。
activity_main.xml中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/createDatabase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create Database"
android:textAllCaps="false"/>
<Button
android:id="@+id/addData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/updateData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/deleteData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Delete Data"
android:textAllCaps="false"/>
<Button
android:id="@+id/queryData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Query Data"
android:textAllCaps="false"/>
</LinearLayout>
MainActivity中的代码如下:
package com.tangliang.sqlitedatabase;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper myDatabaseHelper;
private Button createDatabase;
private Button addData;
private Button updateData;
private Button deleteData;
private Button queryData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDatabaseHelper = new MyDatabaseHelper(this, "Student.db", null, 2);
createDatabase = (Button) findViewById(R.id.createDatabase);
addData = (Button) findViewById(R.id.addData);
updateData = (Button) findViewById(R.id.updateData);
deleteData = (Button) findViewById(R.id.deleteData);
queryData = (Button) findViewById(R.id.queryData);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDatabaseHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "tangliang");
values.put("age", 21);
db.insert("Student", null, values);
values.clear();
}
});
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 18);
db.update("Student", values, "name = ?", new String[] {"tangliang"});
}
});
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
db.delete("Student", "name = ?", new String[]{"tangliang"});
}
});
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
Cursor cursor = db.query("Student", null, null, null, null, null, null);
if(cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.d("MainActivity", "My name is " + name);
Log.d("MainActivity", "I'm " + age + " years old");
}
while(cursor.moveToNext());
}
cursor.close();
}
});
}
}