继承SQLiteOpenHelper
package com.example.dbtest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DB extends SQLiteOpenHelper {
/**
*
* @param context
* @param name 数据库名字
* @param factory
* @param version 数据库版本
*/
public DB(Context context) {
super(context, "dbOne", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//sqlite.org sq数据库学习官网
db.execSQL("CREATE TABLE user(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT,"+
"name TEXT DEFAULT \"\"," +
"sex TEXT DEFAULT \"\")");
}
/**
* 如果数据库版本比当前版本低就会执行upgrade方法升级数据库
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
package com.example.dbtest;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends ListActivity implements OnClickListener{
private DB db = new DB(this);
private SimpleCursorAdapter adapter;
private EditText etname,etsex;
private Button add;
// //创建一个可以写数据库的对象
// SQLiteDatabase dbWriter = db.getReadableDatabase();
// //获得数据库读取权限
// SQLiteDatabase dbReader = db.getWritableDatabase();
private SQLiteDatabase dbWriter,dbRead;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etname = (EditText)findViewById(R.id.etname);
etsex = (EditText)findViewById(R.id.etsex);
add = (Button)findViewById(R.id.add);
add.setOnClickListener(this);
dbRead();
dbDelete();
}
/**
* 插入数据库
*/
public void dbInsert()
{
//创建一个可以写数据库的对象
dbWriter = db.getReadableDatabase();
//使用ContentVlaues对象传入数据库的值
ContentValues cv = new ContentValues();
//列名和值
cv.put("name", etname.getText().toString());
cv.put("sex", etsex.getText().toString());
//插入数据,表名是user,传入的值使用的ContentValues对象
dbWriter.insert("user", null, cv);
//写入完数据后要把数据库关闭
db.close();
}
/**
* 读取数据库展示在listview中
*/
public void dbRead()
{
//获得数据库读取权限
dbRead = db.getWritableDatabase();
//查询所有数据,返回的是Cursor类型
Cursor cursor = dbRead.query("user", null, null, null, null, null, null);
//往adapter里面放入查询到的数据
adapter = new SimpleCursorAdapter(this, R.layout.cell, cursor, new String[]{"name","sex"}, new int[]{R.id.name,R.id.sex});
setListAdapter(adapter);
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.add:
dbInsert();
dbRead();
//清空输入框
etname.setText("");
etsex.setText("");
break;
}
}
/**
* 删除数据
*/
public void dbDelete()
{
//获取listView的点击事件,执行删除当前数据的操作
getListView().setOnItemClickListener(new OnItemClickListener() {
/**
* arg2代表数据的指针,不加final修饰,cursor.moveToPosition(arg2)就会报错?
*/
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2,
long arg3) {
//弹出窗口确认
AlertDialog.Builder builder = new Builder(MainActivity.this);
builder.setMessage("确认要删除?");
builder.setTitle("提示");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//创建一个可以写数据库的对象
dbWriter = db.getReadableDatabase();
Cursor cursor = adapter.getCursor();
//arg2参数是当前的指针,使cursor移动到当前指针上
cursor.moveToPosition(arg2);
//获取当前数据_id字段的id
int itemID = cursor.getInt(cursor.getColumnIndex("_id"));
dbWriter.delete("user", "_id=?", new String[]{itemID+""});
//重新读取数据,刷新界面列表
dbRead();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.show();
}
});
}
}