您的位置:首页 > 移动开发 > Android开发

Android--增删改查--数据库的连接

2016-07-26 16:18 573 查看
需求:

通过对黑名单的操作实现安卓端的增删改查之数据库的连接

主要涉及的知识点:

1.安卓端数据库的连接,增删改查等操作

2.ListView以及适配器的操作

3.ListActivity优化功能

4.避免重复添加和更新已有的电话号码

首先需要创建如图所示的布局



<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</ListView>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加"
android:onClick="add"/>


当点击添加后上面的文字“还没有一个黑名单将消失”,显示的是添加的电话号码

这需要用到ArrayActivity优化需要做三个方面

1.让要显示的布局的Activity 继承 ListActivity

2.布局文件中ListView的id必须是系统指定的id:list

3.如果想在布局文件没有数据时,显示一个提示信息,可以创建一个TextView(但id必须是系统指定的id:empty)

<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="还没有一个黑名单"
android:gravity="center"/>


接下来要新建一个类DBHelp用于连接数据库

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBHelp extends SQLiteOpenHelper{

public DBHelp(Context context) {
super(context, "ren.db", null, 1);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
Log.i("TAG", "DBHelp onCreate()");
String sql = "create table ren(_id integer primary key autoincrement,number varchar)";
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

}


这些写好后可以把一些简单的操作实现了,列如给ListView进行初始化,给添加的button按钮设置监听

接着需要创建一个实体类number有两个属性int _id,String number,分别实现两个构造方法(无参构造函数和两个带参构造函数,以及相应getXxx()和setXxx(),toString()),这里就不用多说

创建numberADO类实现增删改查(这只是基本的,后面的增删改查是实现app上的按钮)

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;
import android.util.Log;

public class numberADO {
DBHelp dbHelp = null;
public numberADO (Context context) {
dbHelp = new DBHelp(context);
}

/**
* 增加
*/
public void addnumber(number blacknumber) {
SQLiteDatabase database = dbHelp.getReadableDatabase();

ContentValues values = new ContentValues();
values.put("number", blacknumber.getNumber());
long id =  database.insert("ren", null, values );
Log.i("TAG", id+"");
database.close();

}

/**
* 删除
*/
public void deletenumber(int _id) {
SQLiteDatabase database  = dbHelp.getReadableDatabase();

database.delete("ren", "_id=?", new String[]{_id+""});

database.close();
}

/**
* 修改
*/
public void updatenumber(number blacknumber) {
SQLiteDatabase database = dbHelp.getReadableDatabase();

ContentValues values = new ContentValues();
values.put("number", blacknumber.getNumber());
database.update("ren", values, "_id="+blacknumber.get_id(), null);
}

/**
* 查询
*/
public List<number> select() {
List<number> list = new ArrayList<number>();

SQLiteDatabase database = dbHelp.getReadableDatabase();

Cursor cursor = database.query("ren", null, null, null, null, null, "_id desc");
while (cursor.moveToNext()) {
int _id = cursor.getInt(0);
String number = cursor.getString(1);
list.add(new number(_id,number));
}

cursor.close();
database.close();
return list;
}
}

接着写这些增删改查的测试类numberTest,通过这个类可以测试上面的方法是否正确

注意:测试类之前需要在Mainfest中加入一些东西

在application里activity前添加

<uses-library android:name="android.test.runner"/>
在application外面加入

<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="hpu.fanny.blacknumberdemo" />//注意这里需要把包名改为你的项目的包名


import java.util.List;

import android.test.AndroidTestCase;
import android.util.Log;

public class numberTest extends AndroidTestCase {
/**
* 添加测试
*/
public void testAdd() {
numberADO ado = new numberADO(getContext());
ado.addnumber(new number(-1, "456"));
}
/**
* 删除测试
*/
public void testDelete() {
numberADO ado = new numberADO(getContext());
ado.deletenumber(2);
}
/**
* 修改
*/
public void testUpdatenumber () {
numberADO ado = new numberADO(getContext());
ado.updatenumber(new number(1, "456"));
}
/**
* 查询
*/
public void testSelect () {
numberADO ado = new numberADO(getContext());
List<number> list = ado.select();
Log.i("TAG", list.toString());
}
}


接着下一篇实现数据库的增加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 数据库