这个主要是可以作为一个demo使用;
因此,我就把操作直接加到了界面上,然后,在logcat中观察现象
sqlite数据库为db类型,本文最后提供 打开db数据的安装破解包,外加本文demo代码
文件功能介绍:
SampleActivity.java : 对应的布局文件activity_main 可以实际操作
SQLiteOpenHelperYline.java 提供创建数据库,数据库表,更新数据库的功能
PersonDomain.java 提供数据
DataBaseOperateNoTool.java 使用原始的方法,进行增删改查
DataBaseOperateInTool.java 使用包装好的方法,进行增删改查
不多说,上代码
// SampleActivity.java
package com.yline.sqlite.Sample;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.yline.sqlite.R;
import com.yline.sqlite.database.DataBaseOperateInTool;
import com.yline.sqlite.database.DataBaseOperateNoTool;
import com.yline.sqlite.database.PersonDomain;
import com.yline.sqlite.database.SQLiteOpenHelperYline;
public class SampleACtivity extends Activity implements OnClickListener{
private Button btn_add;
private Button btn_delete;
private Button btn_find;
private Button btn_update;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CreateDB();
btn_add = (Button) findViewById(R.id.btn_add);
btn_delete = (Button) findViewById(R.id.btn_delete);
btn_find = (Button) findViewById(R.id.btn_find);
btn_update = (Button) findViewById(R.id.btn_update);
btn_add.setOnClickListener(this);
btn_delete.setOnClickListener(this);
btn_find.setOnClickListener(this);
btn_update.setOnClickListener(this);
}
@Override
public void onClick(View v) {
System.out.println("***************************************************************");
switch (v.getId()) {
case R.id.btn_add:
add("name123","number123");
break;
case R.id.btn_delete:
delete("name123");
break;
case R.id.btn_update:
update(1,"123456","123123123");
break;
case R.id.btn_find:
find(3);
break;
}
findAll();
}
/**
* 创建一个数据库
*/
private void CreateDB(){
SQLiteOpenHelperYline helper = new SQLiteOpenHelperYline(this);
helper.getWritableDatabase();
}
/**
* 在表中,添加 一条信息
* @param name 姓名
* @param number 号码
*/
private void add(String name,String number){
DataBaseOperateNoTool ylineTable = new DataBaseOperateNoTool(this);
ylineTable.addDBItem(name,number);
}
private void addInTool(String name,String number){
DataBaseOperateInTool ylineTable = new DataBaseOperateInTool(this);
ylineTable.addDBItem(name,number);
}
/**
* 删除 姓名为name的 信息
* @param name
*/
private void delete(String name){
DataBaseOperateNoTool ylineTable = new DataBaseOperateNoTool(this);
ylineTable.deleteDBItem(name);
}
private void deleteInTool(String name){
DataBaseOperateInTool ylineTable = new DataBaseOperateInTool(this);
ylineTable.deleteDBItem(name);
}
/**
* 更新数据
* @param id 待更新的编号
* @param name 新的姓名
* @param number 新的号码
*/
private void update(int id,String name,String number){
DataBaseOperateNoTool ylineTable = new DataBaseOperateNoTool(this);
ylineTable.updateDBItem(id,name,number);
}
private void updateInTool(int id,String name,String number){
DataBaseOperateInTool ylineTable = new DataBaseOperateInTool(this);
ylineTable.updateDBItem(id,name,number);
}
/**
* 查询信息
* @param id 待查询信息的编号
*/
private void find(int id){
DataBaseOperateNoTool ylineTable = new DataBaseOperateNoTool(this);
ylineTable.findDBItem(id);
}
private void findInTool(int id){
DataBaseOperateInTool ylineTable = new DataBaseOperateInTool(this);
ylineTable.findDBItem(id);
}
/**
* 遍历列表
*/
private void findAll(){
DataBaseOperateNoTool ylineTable = new DataBaseOperateNoTool(this);
List<PersonDomain> persons = ylineTable.findAll();
for(PersonDomain m : persons){
System.out.println(m);
}
}
private void findAllInTool(){
DataBaseOperateInTool ylineTable = new DataBaseOperateInTool(this);
List<PersonDomain> persons = ylineTable.findAll();
for(PersonDomain m : persons){
System.out.println(m);
}
}
}
// activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/et_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:hint="请输入姓名"
android:singleLine="true" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/et_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/et_name"
android:hint="请输入号码"
android:singleLine="true" />
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/et_number"
android:text="add" />
<Button
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btn_add"
android:layout_alignBottom="@+id/btn_add"
android:layout_toRightOf="@+id/btn_add"
android:text="delete" />
<Button
android:id="@+id/btn_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btn_delete"
android:layout_alignBottom="@+id/btn_delete"
android:layout_toRightOf="@+id/btn_delete"
android:text="updata" />
<Button
android:id="@+id/btn_find"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btn_update"
android:layout_alignBottom="@+id/btn_update"
android:layout_toRightOf="@+id/btn_update"
android:text="find" />
</RelativeLayout>
// SQLiteOpenHelperYline.java
package com.yline.sqlite.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* function : 创建数据库 工具
* @author yline
*/
public class SQLiteOpenHelperYline extends SQLiteOpenHelper{
private static final String TAG = "SQLiteOpenHelperYline"; //本类名
private static final String SQLite_NAME = "ylineSQLite.db"; //数据库名称
private static final String TABLE_NAME = "yline"; // 数据库 表名
private static final String TABLE_COLUMN_KEY = "id"; //数据库 第零列名称
private static final String TABLE_COLUMN_ONE = "name"; // 数据库 第一列名称
private static final String TABLE_COLUMN_TWO = "number"; // 数据库 第二列名称
private static final int VERSION = 1;
/**
* function : 创建一个 自命名 的数据库
* @param context 上下文
* @param name 数据库名称
* @param factory , 创建一个cursor(游标); null for the default
* @param version , 版本 >=1
*/
public SQLiteOpenHelperYline(Context context) {
super(context, SQLite_NAME, null, VERSION);
}
/**
* 原始语句 :create table yline (id integer primary key autoincrement,name varchar(20),number varchar(20))
* 数据库被创建后,调用此方法创建一个 SQL表
* @param db 被创建的数据库表
*/
@Override
public void onCreate(SQLiteDatabase db) {
//初始化数据库的表结构 varchar(20)中的20是给程序员看的,没有实际作用
String sql = "create table " + TABLE_NAME
+ " (" + TABLE_COLUMN_KEY + " integer primary key autoincrement,"
+ TABLE_COLUMN_ONE + " varchar(20) ,"
+ TABLE_COLUMN_TWO + " varchar(20) "
+ ")";
db.execSQL(sql);
}
/**
* 当数据库的版本号发生变化的时候,调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVresion) {
//修改数据库的表结构
Log.i(TAG,"数据库的版本更新");
db.execSQL("alter table version add account varchar(20)");
}
}
// DataBaseOperateNoTool.java
package com.yline.sqlite.database;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DataBaseOperateNoTool {
private static final String TABLE_NAME = "yline"; // 数据库 表名
private static final String TABLE_COLUMN_KEY = "id"; //数据库 第零列名称
private static final String TABLE_COLUMN_ONE = "name"; // 数据库 第一列名称
private static final String TABLE_COLUMN_TWO = "number"; // 数据库 第二列名称
private SQLiteOpenHelperYline dbHelper;
/**
* 初始化 构建数据库 的方法
* @param context 包含环境的信息
*/
public DataBaseOperateNoTool(Context context) {
dbHelper = new SQLiteOpenHelperYline(context);
}
/**
* 原始语句 : insert into ylineone (name,number) values ('zhangsan','123')
* 添加 一条 数据到 数据表 中
* @param name 姓名
* @param number 号码
*/
public void addDBItem(String name,String number) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "insert into " + TABLE_NAME
+ " (" + TABLE_COLUMN_ONE + "," + TABLE_COLUMN_TWO + ") "
+ " values (?,?)";
db.execSQL(sql, new Object[]{name,number});
db.close();
}
/**
* 原始语句 :delete from ylineone where id = 9 and name = 'zhangsan'
* 依据所给的条件,删除一条数据
* @param name 姓名
*/
public void deleteDBItem(String name){
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "delete from " + TABLE_NAME
+ " where " + TABLE_COLUMN_ONE + " = ? ";
db.execSQL(sql,new Object[]{name});
db.close();
}
/**
* 原始语句 :update ylineone set number = '12345465',name = "z421" where id = 10
* 依据 id ,更新一条数据
* @param id 编号,
* @param name 姓名
* @param number 号码
*/
public void updateDBItem(int id,String name,String number){
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "update " + TABLE_NAME
+ " set " + TABLE_COLUMN_ONE + " = ?," + TABLE_COLUMN_TWO + " = ? "
+ " where " + TABLE_COLUMN_KEY + " = ? ";
db.execSQL(sql,new Object[]{name, number, id});
db.close();
}
/**
* 原始语句 :select * from yline where id = 10
* 依据 id,查询所有的信息,并返回
* @param id 编号
* @return 一个personDomain数据组
*/
public PersonDomain findDBItem(Integer id){
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = " select * from " + TABLE_NAME
+ " where " + TABLE_COLUMN_KEY + " = ? ";
Cursor cursor = db.rawQuery(sql, new String[]{ id.toString() });
PersonDomain result = null;
if(cursor.moveToNext()){
result = new PersonDomain();
result.setId(cursor.getInt(cursor.getColumnIndex(TABLE_COLUMN_KEY)));
result.setName(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_ONE)));
result.setNumber(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_TWO)));
}
cursor.close();
db.close();
return result;
}
/**
* 原始语句 :select * from yline
* @return 含有PersonDomain 的 list表
*/
public List<PersonDomain> findAll(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = " select * from " + TABLE_NAME;
Cursor cursor = db.rawQuery(sql, null);
List<PersonDomain> list = new ArrayList<PersonDomain>();
PersonDomain result = null;
while(cursor.moveToNext()){
result = new PersonDomain();
result.setId(cursor.getInt(cursor.getColumnIndex(TABLE_COLUMN_KEY)));
result.setName(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_ONE)));
result.setNumber(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_TWO)));
list.add(result);
}
cursor.close();
db.close();
return list;
}
/**
* 查询 数据库表 的数据行数
* @return 行数
*/
public long getCount(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "select count(*) from " + TABLE_NAME;
Cursor cursor = db.rawQuery(sql, null);
cursor.moveToFirst();
long result = cursor.getLong(0);
return result;
}
}
// SQLiteOpenHelperYline.java
package com.yline.sqlite.database;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DataBaseOperateInTool {
private SQLiteOpenHelperYline dbHelper;
private static final String TABLE_NAME = "yline"; // 数据库 表名
private static final String TABLE_COLUMN_KEY = "id"; //数据库 第零列名称
private static final String TABLE_COLUMN_ONE = "name"; // 数据库 第一列名称
private static final String TABLE_COLUMN_TWO = "number"; // 数据库 第二列名称
/**
* 初始化 构建数据库 的方法
* @param context 包含环境的信息
*/
public DataBaseOperateInTool(Context context) {
dbHelper = new SQLiteOpenHelperYline(context);
}
/**
* 原始语句 : insert into ylineone (name,number) values ('zhangsan','123')
* 添加 一条 数据到 数据表 中
* @param name 姓名
* @param number 号码
*/
public void addDBItem(String name,String number){
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TABLE_COLUMN_ONE, name);
values.put(TABLE_COLUMN_TWO, number);
db.insert(TABLE_NAME, null, values);
db.close();
}
/**
* 原始语句 :delete from ylineone where id = 9 and name = 'zhangsan'
* 依据所给的条件,删除一条数据
* @param name 姓名
*/
public void deleteDBItem(String name) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete(TABLE_NAME, TABLE_COLUMN_ONE + "=?", new String[]{name});
db.close();
}
/**
* 原始语句 :update ylineone set number = '12345465',name = "z421" where id = 10
* 依据 id ,更新一条数据
* @param id 编号,
* @param name 姓名
* @param number 号码
*/
public void updateDBItem(int id,String name,String number){
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TABLE_COLUMN_ONE, name);
values.put(TABLE_COLUMN_TWO, number);
db.update(TABLE_NAME, values, TABLE_COLUMN_KEY + "=?", new String[]{ id + "" });
db.close();
}
/**
* 原始语句 :select * from yline where id = 10
* 依据 id,查询所有的信息,并返回
* @param id 编号
* @return 一个personDomain数据组
*/
public PersonDomain findDBItem(Integer id){
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, null, TABLE_COLUMN_KEY+"=?", new String[]{id.toString()}, null, null, null);
PersonDomain result = null;
if(cursor.moveToNext()){
result = new PersonDomain();
result.setId(cursor.getInt(cursor.getColumnIndex(TABLE_COLUMN_KEY)));
result.setName(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_ONE)));
result.setNumber(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_TWO)));
}
cursor.close();
db.close();
return result;
}
/**
* 原始语句 :select * from yline
* @return 含有PersonDomain 的 list表
*/
public List<PersonDomain> findAll(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
List<PersonDomain> list = new ArrayList<PersonDomain>();
PersonDomain result = null;
while(cursor.moveToNext()){
result = new PersonDomain();
result.setId(cursor.getInt(cursor.getColumnIndex(TABLE_COLUMN_KEY)));
result.setName(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_ONE)));
result.setNumber(cursor.getString(cursor.getColumnIndex(TABLE_COLUMN_TWO)));
list.add(result);
}
cursor.close();
db.close();
return list;
}
/**
* 查询 数据库表 的数据行数
* @return 行数
*/
public long getCount(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
// db.query(TABLE_NAME, new String[]{"count(*)"}, null, null, null, null, null);
String sql = "select count(*) from " + TABLE_NAME;
Cursor cursor = db.rawQuery(sql, null);
cursor.moveToFirst();
long result = cursor.getLong(0);
return result;
}
}
打开sqlite数据库的安装破解包下载链接:
百度网盘:http://pan.baidu.com/s/1nt7KQsp
CSDN : http://download.csdn.net/detail/u014803950/8042559
本文代码下载链接:
http://pan.baidu.com/s/1gdy3B5D