目录
一、提出要求
·完成应用联系人(使用SQLite数据库)
1.启动程序可以看到联系人(数据库中储存),联系人过多可以滑动列表
2.点击联系人弹出吐司可以查看联系人详细信息
3.长按联系人出现上下文菜单,处理菜单事件。
二、实现可看到联系人,切列表可滑动
1.编写主布局资源文件
·实现列表且可以滑动
·示例代码
·实现效果
·这里的列表是可以滑动的
2.创建自定义数据库助手类–DBHelper
·作用是创建数据库实现数据库的增删改查
·构造方法创建数据库
·在onCreate方法中创建数据表,并添加表记录
升级数据库
query方法:提供表记录查询服务,返回游标对象
插入
DBHelper中全部代码
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class DBHelper extends SQLiteOpenHelper {
private Context context;//上下文环境
private static final String DB_NAME = "contact.db";//数据库名
private static final int DB_VERSION = 1;//数据库版本号
private static final String TABLE_NAME = "contact";//表名
//构造方法 创建数据库
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
//创建回调方法,只有当数据库不存在时才被调用
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据表
createTable(db, TABLE_NAME);
//添加表记录
addRecords(db, TABLE_NAME);
}
//创建数据表
public void createTable(SQLiteDatabase db, String tableName) {
String strSQL = "create table " + tableName + "(_id text,name text,gender text,age integer,tel text)";
try {
//执行SQL,创建数据表
db.execSQL(strSQL);
} catch (SQLException e) {
Toast.makeText(context, "很遗憾,建表失败!", Toast.LENGTH_SHORT).show();
}
}
//添加表记录
public void addRecords(SQLiteDatabase db, String tableName) {
//创建内容值对象
ContentValues values = new ContentValues();
//将第一条记录信息放入内容值对象
values.put("_id", "21265023");
values.put("name", "鲁正婷");
values.put("gender", "女");
values.put("age", 19);
values.put("tel", "15284850924");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
//将第二条记录信息放入内容值对象
values.put("_id", "21265017");
values.put("name", "周帅");
values.put("gender", "男");
values.put("age", 18);
values.put("tel", "18384022951");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
//将第三条记录信息放入内容值对象
values.put("_id", "21265018");
values.put("name", "黄亮");
values.put("gender", "男");
values.put("age", 19);
values.put("tel", "13183450598");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
//将第四条记录信息放入内容值对象
values.put("_id", "21265011");
values.put("name", "蔡喜");
values.put("gender", "男");
values.put("age", 20);
values.put("tel", "18942889621");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
//将第五条记录信息放入内容值对象
values.put("_id", "21265012");
values.put("name", "杨艺");
values.put("gender", "女");
values.put("age", 19);
values.put("tel", "19136410459");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
// 将第6条记录信息放入内容值对象
values.put("_id", "2020006");
values.put("name", "伍子胥");
values.put("gender", "男");
values.put("age", 20);
values.put("tel", "15878786780");
// 利用数据库对象的插入方法,插入第6条记录
db.insert(tableName, null, values);
// 将第7条记录信息放入内容值对象
values.put("_id", "2020007");
values.put("name", "南怀瑾");
values.put("gender", "男");
values.put("age", 18);
values.put("tel", "13956567862");
// 利用数据库对象的插入方法,插入第7条记录
db.insert(tableName, null, values);
// 将第8条记录信息放入内容值对象
values.put("_id", "2020008");
values.put("name", "李文华");
values.put("gender", "女");
values.put("age", 18);
values.put("tel", "15956567845");
// 利用数据库对象的插入方法,插入第8条记录
db.insert(tableName, null, values);
// 将第9条记录信息放入内容值对象
values.put("_id", "2020009");
values.put("name", "吴文渊");
values.put("gender", "男");
values.put("age", 20);
values.put("tel", "13978784560");
// 利用数据库对象的插入方法,插入第8条记录
db.insert(tableName, null, values);
// 将第10条记录信息放入内容值对象
values.put("_id", "2020010");
values.put("name", "陈燕文");
values.put("gender", "女");
values.put("age", 18);
values.put("tel", "15890903456");
// 利用数据库对象的插入方法,插入第10条记录
db.insert(tableName, null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//暂不升级
}
//查询方法
public Cursor query(String tableName, String[] columns, String selection, String[] selectionArgs) {
//获取只读数据库
SQLiteDatabase db = getReadableDatabase();
//执行的数据库查询方法,返回游标对象
return db.query(tableName, columns, selection, selectionArgs, null, null, null, null);
}
//删除方法
public int delete(String tableName, String whereClause, String[] whereArgs) {
//获取可写数据库
SQLiteDatabase db = getWritableDatabase();
//执行数据库删除方法,返回删除记录数
return db.delete(tableName, whereClause, whereArgs);
}
//更新方法
public int update(String tableName, ContentValues values, String whereClause, String[] whereArgs) {
//获取可写数据库
SQLiteDatabase db = getWritableDatabase();
//执行数据库更新方法,返回更新记录数
return db.update(tableName, values, whereClause, whereArgs);
}
//插入方法
public long insert(String tableName, ContentValues values) {
//获取可写数据库
SQLiteDatabase db = getWritableDatabase();
//执行数据库插入方法,返回插入记录数
return db.insert(tableName, null, values);
}
}
3.主界面类
·声明变量和常亮
·获取控件实例
·实例化数据库助手
· 查询全部联系人,返回游标,作为数据源
关于游标:游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。
·创建简单的游标适配器
·给列表控件设置适配器
·给列表控件注册监听器
在这里已经可以查看效果了
·这里已经完成了单击弹出吐司显示全部联系人信息
Original: https://blog.csdn.net/m0_64018773/article/details/125393556
Author: 小鲁不吃猪蹄
Title: 安卓基础学习 Day 10|连接SQLite数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815569/
转载文章受原作者版权保护。转载请注明原作者出处!