SQLite是android自带的微型功能比较健全的手机数据库,他有一大辅助类SQLiteOpenHelper,当我们自己建立一个类必须继承它,并且提供两方面的功能:
第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作;
第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
下面是实例用法:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
//在SQLiteOepnHelper的子类当中,必须有该构造函数
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
//必须通过super调用父类当中的构造函数
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DatabaseHelper(Context context,String name){
this(context,name,VERSION);
}
public DatabaseHelper(Context context,String name,int version){
this(context, name,null,version);
}
//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a Database");
//execSQL函数用于执行SQL语句
db.execSQL("create table user(id int,name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("update a Database");
}
}
Activity运行程序
package com.example.sqllite;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.sqlite3.db.DatabaseHelper;
public class MainActivity extends Activity {
private Button createDatabase,updateDatabase,insert,update,query,delete;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createDatabase = (Button)findViewById(R.id.createDatabase);
createDatabase.setOnClickListener(new CreateDatabase());
updateDatabase = (Button)findViewById(R.id.updateDatabase);
updateDatabase.setOnClickListener(new UpdateDatabase());
insert = (Button)findViewById(R.id.insert);
insert.setOnClickListener(new Insert());
update = (Button)findViewById(R.id.update);
update.setOnClickListener(new Update());
query = (Button)findViewById(R.id.query);
query.setOnClickListener(new Query());
delete = (Button)findViewById(R.id.delete);
delete.setOnClickListener(new Delete());
}
class CreateDatabase implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建helper对象,传入参数上下文与数据库名字
DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
//单有上面的还不能完成创建,需要将数据读出加载到手机数据库当中完成创建数据库操作
SQLiteDatabase db = databasehelper.getReadableDatabase();
Toast.makeText(MainActivity.this, "createDatabase", 3000).show();
}
}
class UpdateDatabase implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite", 2);
SQLiteDatabase db = databasehelper.getReadableDatabase();
Toast.makeText(MainActivity.this, "updateDatabase", 3000).show();
}
}
class Insert implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "zhangsan");
DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
//写入
SQLiteDatabase db = databasehelper.getWritableDatabase();
db.insert("user",null,values);
Toast.makeText(MainActivity.this, "insert", 3000).show();
}
}
//更新操作相当于执行sql语句当中的update语句
//UPDATE table_name SET XXCol=XXX WHERE xxCol =xx..就从哪的值设置成什么样
class Update implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
SQLiteDatabase db = databasehelper.getWritableDatabase();
ContentValues values = new ContentValues();
//将name列的值改成什么
values.put("name", "lisi");
//然后更新user参数是要更新的表名
//第二个是ContentValues对象把name列的值改成lisi
//第三个是where子句?是占位符
//第四个一个元素付值到第一个?
db.update("user", values, "id=?", new String[]{"1"});
Toast.makeText(MainActivity.this, "Update", 3000).show();
}
}
class Query implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//先获得继承sqlitehelper类对象
DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
//然后读取上述类的数据放入到SQLite数据库对象当中
SQLiteDatabase db = databaseHelper.getReadableDatabase();
//读取后调用query方法放入到游标对象当中,则让游标指向这个查询数据
Cursor cursor = db.query("user", new String[]{"id","name"}, "id", null, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(MainActivity.this, "query", 3000).show();
}
}
}
class Delete implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this, "name");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
String sql = "delete from test_sqlite where id = 1";
db.execSQL(sql);
Toast.makeText(MainActivity.this, "delete", 3000);
}
}
}
在命令行中查看数据库命令:
adb shell //进入linux命令行
ls -l 查看目录 cd data cd data cd 项目包名(com.example.sqllite) 查看建立的数据库名 ,进入数据库,然后再sqlite3 数据库名查看表,然后select * from 表名
这里我在操作的时候出现了问题,insert不进去数据,query也出现问题,问题已经解决了!“id” ,insert方法