SQLite轻量级存储可以借助SQLiteOpenHelper类间接实现存储,也可以直接调用openOrCreatedatabase()函数创建数据库对象,执行sql命令。
本文讲述SQLiteOpenHelper实现方法,以备自己忘记。
1.创建一类DBOpenHelper继承SQLiteOpenHelper;
2.重载SQLiteOpenHelper中的方法,onCreate(),onUpgrade(),实现DBOpenHelper的构造方法,在onCreate()执行sql语句创建表。
3.在MainActivity中声明SQLiteDatabase对象和DBOpenHelper对象。
4.定义对数据操作的函数,在按钮的监听器中执行,需要调用getWritableDatabase才能创建数据表。。
第一步、第二步
package com.example.savings;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper {
/* 构造方法 */
public DBOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
private static final String DB_CREATE = "create table people ( id integer primary key autoincrement,name text not null,sex text not null) ";
//重载onCreate
@Override
public void onCreate(SQLiteDatabase paramSQLiteDatabase) {
paramSQLiteDatabase.execSQL(DB_CREATE);
}
//重载onUpgrade,应该更新数据库版本时用,还没有学。
@Override
public void onUpgrade(SQLiteDatabase paramSQLiteDatabase, int paramInt1,
int paramInt2) {
}
}
第三步、第四步
package com.example.savings;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView view;
SQLiteDatabase db;
DBOpenHelper dbOpenHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// setContentView(R.layout.activity_main);
Button newcreate = (Button) findViewById(R.id.button1);
Button insert = (Button) findViewById(R.id.button2);
Button updateButton = (Button) findViewById(R.id.button3);
Button deleteButton = (Button) findViewById(R.id.button4);
Button queryButton = (Button) findViewById(R.id.button5);
view = (TextView) findViewById(R.id.textView1);
newcreate.setOnClickListener(new createlistener());
insert.setOnClickListener(new insertlistener());
updateButton.setOnClickListener(new updatelistener());
deleteButton.setOnClickListener(new deletelistener());
queryButton.setOnClickListener(new querylistener());
}
/* *为了简洁,我初始化运行这个returndb() */
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
returndb();
}
/* *需要调用getWritableDatabase()或者getReadableDatabase(),才能创建表,更新以及删除,查询数据。 */ public boolean returndb() {
dbOpenHelper = new DBOpenHelper(MainActivity.this, "people.db", null, 1); //初始化
db = dbOpenHelper.getWritableDatabase();
if (db == null) {
return false;
} else
return true;
}
//创建表
class createlistener implements OnClickListener {
@Override
public void onClick(View paramView) {
returndb();
}
}
//插入数据使用contentValues容器,更新时也使用此容器,最后调用db.insert(, ,)确认。
class insertlistener implements OnClickListener {
@Override
public void onClick(View paramView) {
ContentValues values = new ContentValues();
values.put("name", "小强");
values.put("sex", "男");
db.insert("people", null, values);
}
}
//更新数据,可以按条件更新
class updatelistener implements OnClickListener {
@Override
public void onClick(View paramView) {
ContentValues values = new ContentValues();
values.put("name", "小名");
db.update("people", values, "name='小强'", null);
}
}
//删除数据
class deletelistener implements OnClickListener {
@Override
public void onClick(View paramView) {
db.delete("people", "id=2", null);
}
}
//查询数据 使用Cursor 调用cursor.moveToFirst 获取第一行数据,我获取全部数据是判断moveToNext()是否为真
class querylistener implements OnClickListener {
@Override
public void onClick(View paramView) {
Cursor cursor = db.query("people", new String[] { "id", "name",
"sex" }, null, null, null, null, null);
if (cursor == null) {
view.setText("no 数据");
return;
}
String msg = "";
while (cursor.moveToNext()) {
msg += "id:" + cursor.getInt(cursor.getColumnIndex("id")) + ",";
msg += "name:"
+ cursor.getString(cursor.getColumnIndex("name")) + ",";
msg += "sex:" + cursor.getString(cursor.getColumnIndex("sex"))
+ "\n";
}
view.setText(msg);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
xml文件为
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="建立" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:text="插入" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button2"
android:text="更新" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button3"
android:text="删除" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="TextView" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button4"
android:text="查询" />
</RelativeLayout>