最近看了SQLite,并用其做了一个简单的记事实例
首先创建一个数据库的工具类DBHelper继承SQLiteOpenHelper.并覆盖onCreate()方法和onUpgrade()方法,并添加 insert() del() query()方法
分别用来添加.删除和查询数据
DBHelper.java代码如下:
package cn.nict.sql.activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
//数据库名称
private static final String DB_NAME = "cool.db";
//表名称
private static final String TBL_NAME = "CollTB1";
//SQL语句
private static final String CREATE_TBL = " create table "
+" CollTB1(_id integer primary key autoincrement,name text,things text) ";
//SQLiteDatabase实例
private SQLiteDatabase db;
//构造方法
DBHelper(Context c){
super(c, DB_NAME, null, 2);
}
@Override//创建表
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
this.db = db;
db.execSQL(CREATE_TBL);
}
//插入方法
public void insert(ContentValues values){
//获取SQLiteDatabase
SQLiteDatabase db = getWritableDatabase();
//插入
db.insert(TBL_NAME, null, values);
db.close();
}
//查询方法
public Cursor query(){
//获取SQLiteDatabase
SQLiteDatabase db = getWritableDatabase();
//查询获取Cursor
Cursor c =db.query(TBL_NAME, null, null, null, null, null, null);
return c;
}
//删除方法
public void del(int id){
if (db == null)
db = getWritableDatabase();
db.delete(TBL_NAME, "_id=?", new String[] { String.valueOf(id) });
//数组空格?为什么 new String[] { String.valueOf(id) });
}
//关闭数据库
public void close() {
if (db != null) {
db.close();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
然后在main.xlm中添加两个TextView和两个EditText 和三个Button
main.xlm 代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/hello" />
<EditText
android:text=""
android:id="@+id/edit1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/things" />
<EditText
android:id="@+id/edit2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:height="200px"
android:text="" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="添加" />
<Button
android:id="@+id/btnn1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="清空" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="查看" />
</LinearLayout>
</LinearLayout>
然后就是MianActivity.java,在这里面声明TextView EditText Button
MianActivity.java代码如下:
package cn.nict.sql.activity;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private EditText edit_title,edit_things;
private Button addbtn,querybtn,cleanButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//设置当前Activity标题
this.setTitle("重要事情");
addbtn = (Button)findViewById(R.id.btn1);
querybtn = (Button)findViewById(R.id.btn2);
edit_title = (EditText)findViewById(R.id.edit1);
edit_things = (EditText)findViewById(R.id.edit2);
cleanButton= (Button)findViewById(R.id.btnn1);
cleanButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
edit_things.setText("");
edit_title.setText("");
}
});
addbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (TextUtils.isEmpty(edit_title.getText().toString()) && TextUtils.isEmpty(edit_things.getText().toString())) {
Toast.makeText(MainActivity.this, "请输入事情标题和内容", Toast.LENGTH_LONG).show();
}
else if (TextUtils.isEmpty(edit_things.getText().toString())){
Toast.makeText(MainActivity.this, "请输入事情内容", Toast.LENGTH_LONG).show();
}
else if (TextUtils.isEmpty(edit_title.getText().toString()) ) {
Toast.makeText(MainActivity.this, "请输入事情标题", Toast.LENGTH_LONG).show();
}else{
String title = edit_title.getText().toString();
String things = edit_things.getText().toString();
//内容值实例
ContentValues values = new ContentValues();
//在values添加信息
values.put("name", title);
values.put("things", things);
//实例化数据库帮助类
DBHelper helper = new DBHelper(getApplicationContext());
// 插入数据
helper.insert(values);
//实例化Intent
Intent intent = new Intent(MainActivity.this,QueryActivity.class);
startActivity(intent);
//finish();
}
}
});
querybtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,QueryActivity.class);
startActivity(intent);
}
});
}
}
最后是显示记录的QueryActivity.java
首先是创建这个Activity的布局文件,row.xml
row.xml代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
>
<TextView
android:id="@+id/text0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="20px"
/>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="20px"
/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="20px"
/>
</LinearLayout>
QueryActivity.java代码如下
package cn.nict.sql.activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class QueryActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTitle("事情详细");
//实例化数据库帮助类
final DBHelper helper = new DBHelper(this);
//查询获得游标
Cursor c = helper.query();
//列表项数组
String[] from = {"_id","name","things"};
//列表项ID
int[] to ={R.id.text0,R.id.text1,R.id.text2};
//适配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.row,c,from,to);
//列表视图
ListView listView = getListView();
//为列表视图添加适配器
listView.setAdapter(adapter);
//提示对话框
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
//为ListView 添加单击事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
final long temp =arg3;
builder.setMessage("真的要删除该记录吗?").setPositiveButton("是",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//删除数据
helper.del((int)temp);
//重新查询
Cursor c =helper.query();
String[] from = {"_id","name","things"};
int[] to ={R.id.text0,R.id.text1,R.id.text2};
SimpleCursorAdapter adapter = new
SimpleCursorAdapter(getApplicationContext(),R.layout.row,c,from,to);
ListView listView = getListView();
//为列表视图添加适配器
listView.setAdapter(adapter);
// Toast.makeText(QueryActivity.this, temp, Toast.LENGTH_LONG);
}
}).setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
//创建提示对话框
AlertDialog ad = builder.create();
//显示对话框
ad.show();
}
});
helper.close();
}
}
当完成这个实例后,可以尝试结合闹钟在一起,做一个事情备忘录这样的一个实例
源码地址: http://download.csdn.net/detail/lb_llc/4461113