数据库操作类:SQLiteDatabase
在Android系统之中,一个android.database,sqlite.SQLiteDatebase类的实例都代表了一个SQLite数据库的操作,通过SQLiteDatabase类可以执行SQL语句,可以完成对数据表的增加,修改,删除,查询等操作,在此类之中定义了基本的数据库执行SQL语句的操作方法以及一些操作的模式常量。
1.MyDatabaseHelper类
public class MyDatabaseHelper extends SQLiteOpenHelper{
private static final String DATABASENAME = "wei.db";
private static final int DATABASEVERSION = 1;
private static final String TABLENAME = "mytable";
public MyDatabaseHelper(Context context) {
super(context, DATABASENAME, null, DATABASEVERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "CREATETABLE" + DATABASENAME + "("
+"id INTEGER PRIMARY KAY,"
+"NAME VERCHAR(50) NOT NULL,"
+"birthday DATA NOT NULL"+")";
db.execSQL(sql); //执行SQL
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql = "DROP TABLE IF EXISTS" + TABLENAME;
db.execSQL(sql);
this.onCreate(db);
}
}
这样一个数据库的辅助操作类就完成了,那么完成之后,就需要在Activity中调用此类对象的方法。
一个是getReadableDatabase()一个是getWriteableDatabase()
2.MySQLiteDemo类
public class MySQLiteDemo extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_sqlite_demo);
SQLiteOpenHelper helper = new MyDatabaseHelper(this);
helper.getWritableDatabase();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_my_sqlite_demo, menu);
return true;
}
}
现在应该可以去的链接了,如果没有出现错误,,则应该从指定位置上进行查找,如果数据库不存在,那么肯定会调用onCreate方法创建表,如果现在数据库存在了,但是版本号改了,则先将数据表删除掉,然后在创建新的数据表,如果没有任何变化,不执行任何操作。
android 使用SQLite数据库并完成数据库的更新操作
在操作数据库的时候可以直接在Android之中使用shell命令。
Android中的shell命令是依靠adb取得,而且可以取得一个正在运行的模拟器的shell。但是要注意的是,在AndroidSDK2.3之前的版本ADB可以直接使用,但是现在的版本不太一样,除了tools文件夹之中的内容之外,还需要配置宇哥platform-tools文件夹,表示平台工具。
配置完成之后就可以通过下面的命令完成。
1,进入到shell adb shell
2,可以使用ls命令列出所有的内容;
3,进入到sqlite数据库成成的文件夹之中;
4,进入到目录之后就可以利用sqlite命令找到wei.db;
5,可以输入“help命令,查看所有可用的命令;
6,可以输入schema命令,查看所有的表;
7,既然已经找到了数据表,那么下面可以执行SQL语句
向mytable表中增加数据;INSERT INTO mytable(name,birthday)VALUES(“爱德华”,1999-09-09)
查看mytable的数据,SELECT id,name,birthday FROM mytable;
修改记录:UPDATE mytable SET birthday='1999-09-08' WHERE id = 1;
删除数据:DELETE FROM mytable WHERE ID = 1;
这些操作都属于标准的SQL语句,可是现在如果要使用数据库肯定不能让用户自己输入这些命令,需要通过程序进行包装,模仿DAO的思路,下面单独做一个操作类。操作mytable表
MytableOperate类代码
public class MytableOperate {
private static final String TABLENAME = "mytable";//表示要操作数据表的名称
private SQLiteDatabase db = null;
public MytableOperate(SQLiteDatabase db){
this.db = db;
}
public void insert(String name,String birthday){
String sql = "INSERT INTO"+TABLENAME + "(name,birthday)VALUES('" + name + "','" + birthday + "')";
this.db.execSQL(sql);
this.db.close();
}
public void update(int id,String name,String birthday){
String sql = "UPDATE"+TABLENAME + "SET name= " + name+"',birthday = '" + birthday + "'WHERE id = '"+id;
this.db.execSQL(sql);
this.db.close();
}
public void delete(int id){
String sql = "DELETE FROM"+ TABLENAME + "WHERE id = " + id;
this.db.execSQL(sql);
this.db.close();
}
}
本程序中是完成了数据表的更新操作,下面为了模拟出是前台,定义一个布局文件,里面定义三个按钮;
main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MySQLiteDemo" >
android:id="@+id/insertbtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="增加数据"/>
android:id="@+id/updatebtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="更新数据"/>
android:id="@+id/deletebtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="删除数据"/>
MySQLiteDemo 执行增删改的操作
public class MySQLiteDemo extends Activity { private Button insertBut = null ; private Button updateBut = null ; private Button deleteBut = null ; private SQLiteOpenHelper helper = null ; private MytabOperate mtab = null ; private static int count = 0 ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); this.helper = new MyDatabaseHelper(this); this.insertBut = (Button) super.findViewById(R.id.insertBut) ; this.updateBut = (Button) super.findViewById(R.id.updateBut) ; this.deleteBut = (Button) super.findViewById(R.id.deleteBut) ; this.insertBut.setOnClickListener(new InsertOnClickListenerImpl()) ; this.updateBut.setOnClickListener(new UpdateOnClickListenerImpl()) ; this.deleteBut.setOnClickListener(new DeleteOnClickListenerImpl()) ; } private class InsertOnClickListenerImpl implements OnClickListener{ @Override public void onClick(View v) { MySQLiteDemo.this.mtab = new MytabOperate( MySQLiteDemo.this.helper.getWritableDatabase()); MySQLiteDemo.this.mtab.insert("李兴华" + count++, "1979-08-12") ; } } private class UpdateOnClickListenerImpl implements OnClickListener{ @Override public void onClick(View v) { MySQLiteDemo.this.mtab = new MytabOperate( MySQLiteDemo.this.helper.getWritableDatabase()); MySQLiteDemo.this.mtab.update(3, "MLDN", "1981-06-27"); } } private class DeleteOnClickListenerImpl implements OnClickListener{ @Override public void onClick(View v) { MySQLiteDemo.this.mtab = new MytabOperate( MySQLiteDemo.this.helper.getWritableDatabase()); MySQLiteDemo.this.mtab.delete(3) ; } } }