1.利用SQLiteOpenHelper对象创建DatabaseHelper类,从而创建联系人的数据库。
1)声明一个静态的最终的对象DATABASENAME="csdn.db"作为数据库csdn,声明一个静态整型dataBaseVersion;
private static final String DATABASENAME="csdn.db";
private static int dataBaseVersion=1;
public DatabaseHelper(Context context){
super(context,DATABASENAME,null,dataBaseVersion);
}
<span style="font-size:18px;">注意:</span>每一次使用onUpgrade()方法进行版本升级的时候dataBaseVersion都要加上1。
2)在onCreate()方法中利用execSQL()方式创建联系人的数据库表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table users(userid integer primary key autoincrement,username varchar(20),userage integer,usersalary double,userphone varchar(12))");
}
3)如果需要改动数据库列表,升级数据库版本时调用onUpgrade()方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("----------升级了........");
}
2.联系人的增删改查:
注意:创建、升级数据库,添加、修改、删除数据库中的内容使用execSQL()方法,而查找数据库中的数据对象则使用rawQuery()方法。
// 依赖的对象
private DatabaseHelper databaseHelper;
// 通过构造器实例化
public UserDaoImpl(DatabaseHelper databaseHelper) {
this.databaseHelper = databaseHelper;
}
@Override
public boolean insert(Users entity) {
try {
// 得到数据库的操作对象
SQLiteDatabase db = databaseHelper.getWritableDatabase();
// db.execSQL("insert into users(username,userage,usersalary)values('"+entity.getUaerName()+"',"+entity.getUserAge()+","+entity.getUserSalary()+")");
db.execSQL(
"insert into users(username,userage,usersalary,userphone)values(?,?,?,?)",
new Object[] { entity.getUserName(), entity.getUserAge(),
entity.getUserSalary(),entity.getUserPhone()});
db.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public boolean update(Users entity) {
try {
// 得到数据库的操作对象
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL(
"update users set username=?,userage=?,usersalary=?,userphone=? where userId=?",
new Object[] { entity.getUserName(), entity.getUserAge(),
entity.getUserSalary(),entity.getUserPhone(), entity.getUserId() });
db.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public boolean delete(Users entity) {
return deleteById(entity.getUserId());
}
@Override
public boolean deleteById(Integer id) {
try {
// 得到数据库的操作对象
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL("delete from users where userId=?", new Object[] { id });
db.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public Users findById(Integer id) {
Users entity = null;
SQLiteDatabase db = databaseHelper.getWritableDatabase();
Cursor c = db.rawQuery(
"select userid,username,userage,usersalary,userphone from users where userid=? ",
new String[] { id + "" });
if (c.moveToNext()) {
entity = new Users();
entity.setUserId(c.getInt(c.getColumnIndex("userid")));
entity.setUserName(c.getString(c.getColumnIndex("username")));
entity.setUserAge((c.getInt(c.getColumnIndex("userage"))));
entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
entity.setUserPhone(c.getString(c.getColumnIndex("userphone")));
}
db.close();
return entity;
}
@Override
public List<Users> findAll() {
List<Users> entities = new ArrayList<>();
SQLiteDatabase db = databaseHelper.getWritableDatabase();
Cursor c = db.rawQuery(
"select userid,username,userage,usersalary,userphone from users",
null);
while (c.moveToNext()) {
Users entity = new Users();
entity.setUserId(c.getInt(c.getColumnIndex("userid")));
entity.setUserName(c.getString(c.getColumnIndex("username")));
entity.setUserAge((c.getInt(c.getColumnIndex("userage"))));
entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
entity.setUserPhone(c.getString(c.getColumnIndex("userphone")));
entities.add(entity);
}
db.close();
return entities;
}
3.获取联系人的信息到界面上
1)界面的搭建
利用ListView插件进行显示数据。
2)将联系人的信息获取到界面上的步骤:
①声明获取显示的控件
②从数据库中获取要显示的数据
③创建自定义的adapter对象,将adapter对象作为控制层
④利用继承BaseAdapter对象创建MyAdapter为创建自定义的adapter对象做准备
⑤理解MyAdapter中的方法并进行相关实现,getCount()方法返回总条目的数量;getItem()返回当前条目对应的对象;getView()方法返回每个条目
⑥对于getView()方法返回每个条目的实现。其中一半有三种方式:
一种是:实现单选的效果
private View SingleChoice(int position) {
// 获取当前位置现实的对象
Users entity = entities.get(position);
// 创建出每个条目显示的控件对象
// TextView tv=new TextView(MainActivity.this);
View v = View.inflate(MainActivity.this,
android.R.layout.simple_list_item_single_choice, null);
CheckedTextView tv = (CheckedTextView) v
.findViewById(android.R.id.text1);
tv.setText(entity.getUserName() + "-" + entity.getUserPhone());
tv.setHeight(40);
return tv;
}
一种是:实现多选的效果
private View MultipleChoice(int position) {
// 获取当前位置现实的对象
Users entity = entities.get(position);
// 创建出每个条目显示的控件对象
// TextView tv=new TextView(MainActivity.this);
View v = View.inflate(MainActivity.this,
android.R.layout.simple_list_item_multiple_choice, null);
CheckedTextView tv = (CheckedTextView) v
.findViewById(android.R.id.text1);
tv.setText(entity.getUserName() + "-" + entity.getUserPhone());
tv.setHeight(40);
return tv;
}
一种是:自定义的方法的效果
private View DefinedChoice(int position) {
// 获取当前条目的位置
Users entity = entities.get(position);
// View中inflate方法
View v = View.inflate(MainActivity.this, R.layout.list_item_users,null);
//获取v对象的控件
TextView tv_id = (TextView) v.findViewById(R.id.tv_id);
TextView tv_name = (TextView) v.findViewById(R.id.tv_name);
TextView tv_age = (TextView) v.findViewById(R.id.tv_age);
TextView tv_phone = (TextView) v.findViewById(R.id.tv_phone);
// 给控件设置
tv_id.setText("" + entity.getUserId());
tv_name.setText("姓名:" + entity.getUserName());
tv_age.setText("年龄:" + entity.getUserAge());
tv_phone.setText("电话:" + entity.getUserPhone());
return v;
}