首先SQLite是一款非常优秀并且广泛使用于嵌入式软件中的数据库,关于其具体的情况,可以去SQLite的官网上查看点击打开链接
如下是android中关于SQLite的介绍
其实这些都不重要,只要知道它跟一般我们用的诸如oracle、mysql之类的数据库一样,只是功能受限而已,但是基本的增删改查还是可以胜任的。好了,我们看看今天的程序,跟jdbc一样,我们需要先建立一个dbhelper类来操作数据库,如下
package com.sqliteTest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class DataBaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
public DataBaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DataBaseHelper(Context context, String name) {
this(context, name, VERSION);
// TODO Auto-generated constructor stub
}
public DataBaseHelper(Context context, String name, int version) {
this(context, name, null, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a database");
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");
}
}
关于构造函数中的参数问题,在eclipse中编程时会自动提示的,这里就不多说了。下面是Activity类
package com.sqliteTest;
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;
public class SqliteTest extends Activity {
private Button createD, updateD, insert, update, query = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
createD = (Button)findViewById(R.id.createD);
updateD = (Button)findViewById(R.id.updateD);
update = (Button)findViewById(R.id.update);
insert = (Button)findViewById(R.id.insert);
query = (Button)findViewById(R.id.query);
createD.setOnClickListener(new CreateD_Listener());
updateD.setOnClickListener(new UpdateD_Listener());
insert.setOnClickListener(new Insert_Listener());
update.setOnClickListener(new Update_Listener());
query.setOnClickListener(new Query_Listener());
}
class CreateD_Listener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
SQLiteDatabase database = helper.getReadableDatabase();
}
}
class UpdateD_Listener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db", 2);
SQLiteDatabase database = helper.getReadableDatabase();
}
}
class Update_Listener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
ContentValues value = new ContentValues();
value.put("name", "update_thinkpad");
DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
SQLiteDatabase database = helper.getWritableDatabase();
database.update("user", value, "id=?", new String[]{"2012"});
}
}
class Insert_Listener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
ContentValues value = new ContentValues();
value.put("id", 2012);
value.put("name", "thinkpad");
DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
SQLiteDatabase database = helper.getWritableDatabase();
database.insert("user", null, value);
}
}
class Query_Listener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
SQLiteDatabase database = helper.getReadableDatabase();
Cursor cursor = database.query("user", new String[]{"id", "name"}, "id=?",
new String[]{"2012"}, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
System.out.println("query---"+name);
}
}
}
}
这里最重要的就是SQLiteOpenHelper类,创建和链接数据库时候必需的,关于具体的解释,来看看官方 文档
从这里,我们可以清楚的了解到其使用方法。
如下是程序运行的结果
点击create database时,结果如下
可以看到创建数据库的时候,执行了onCreate()方法。
点击update database时,如下
可知其执行了onUpgrade()方法。
点击insert和update的时候,没有系统必须要求重写的方法执行,但是我们自己写的逻辑的代码肯定执行了,不信的话,点击query按钮看看,效果如下
name已经从thinkpad更新成update_thinkpad,证明我们首先insert成功,然后update成功,最后query也成功了。
SQLite数据库部分就先说到这里,下面说一个开发此程序期间的一个插曲。创建工程的时候大意了,不小心把Activity类名小写了,在运行的时候在发现,于是我就把小写改成大写了,但是运行的时候报错,说androidManager找不到这个类,这就奇怪了,涉及到类名的地方我都改过了,怎么会找不到呢,后来网上搜了一下解决方法,一哥们总结的很好,如下