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; }