1.要求使用sqlite数据库保存通讯录,使得每次运行程序均能显示当前联系人的列表
2.主界面包含一个添加联系人按钮和一个联系人列表
点击添加联系人按钮能添加新的联系人。
3.对数据库进模糊查询
1.使用Ormlite数据库要去下载jar包
implementation files('libs/ormlite-androID-5.0.jar')implementation files('libs/ormlite-core-5.0.jar')
2.创建数据库DatabaseHelper
package com.example.myapplication;import androID.content.Context;import androID.database.sqlite.sqliteDatabase;import com.j256.ormlite.androID.apptools.OrmlitesqliteOpenHelper;import com.j256.ormlite.dao.Dao;import com.j256.ormlite.support.ConnectionSource;import com.j256.ormlite.table.tableUtils;import java.sql.sqlException;/** * 定义数据库的工具类,继承OrmlitesqliteOpenHelper类,重写 onCreate\onUpgrade方法 */public class DatabaseHelper extends OrmlitesqliteOpenHelper{ public static final String DB_name = "mydb.db"; public static final int version = 1; public DatabaseHelper(Context context){ super(context,DB_name,null,version); } /** * 定义访问表dict的对象 */ public Dao<Dict,Integer> dictDao; /** * 返回表dict的 *** 作对象 * @return * Dao :database access operate */ public Dao<Dict,Integer> getDictDao(){ if(dictDao ==null){ try { /** * 通过getDao获取访问某个表的对象,传递的注解的实体类 */ dictDao =getDao(Dict.class); } catch (sqlException e) { e.printstacktrace(); } } return dictDao; } //第一次创建数据库时调用 @OverrIDe public voID onCreate(sqliteDatabase sqliteDatabase, ConnectionSource connectionSource) { //创建相应的表 try { /* 通过createtable方法创建表 参数1:连接源 参数2:要创建的表(带注解的实体类) */ tableUtils.createtable(connectionSource, Dict.class); } catch (sqlException e) { e.printstacktrace(); } } /** * 数据库升级时调用 * @param sqliteDatabase * @param connectionSource * @param oldVersion * @param newVersion */ @OverrIDe public voID onUpgrade(sqliteDatabase sqliteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) { if (newVersion>oldVersion){ try { //通过droptable删除表 /** * 参数说明 * 参数1:数据库的连接源 * 参数2:要删除的表(标注了的实体类) * 参数3:删除出错时是否 要删除表 */ tableUtils.droptable(connectionSource,Dict.class,true); //createtableIfNotExists 如果表不存在,才创建表 tableUtils.createtableIfNotExists(connectionSource,Dict.class); } catch (sqlException e) { e.printstacktrace(); } } }}
3.写入监听器,并插入数据
package com.example.myapplication;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.EditText;import androID.Widget.Toast;import androIDx.appcompat.app.AppCompatActivity;import com.j256.ormlite.dao.Dao;import com.j256.ormlite.stmt.queryBuilder;import java.sql.sqlException;import java.util.List;public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener { //定义控件 private EditText edtWord; private EditText edtInterpret; private button btnInsert; private button btnRead; private button btnquery; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_orm); Log.v("test","one"); //初始化控件 edtWord = (EditText) findVIEwByID(R.ID.edt_word); edtInterpret = (EditText) findVIEwByID(R.ID.edt_interpret); btnInsert = (button) findVIEwByID(R.ID.btn_insert); btnRead = (button) findVIEwByID(R.ID.btn_read); btnquery = (button) findVIEwByID(R.ID.btn_query); //绑定点击事件 btnInsert.setonClickListener(this); btnRead.setonClickListener(this); btnquery.setonClickListener(this); } private DatabaseHelper dbHelper; @OverrIDe public voID onClick(VIEw vIEw) { if (dbHelper==null){ dbHelper = new DatabaseHelper(MainActivity.this); } int ID = vIEw.getID(); switch (ID){ case R.ID.btn_insert: //插入数据 String word = edtWord.getText().toString(); String interpret = edtInterpret.getText().toString(); //获取 *** 作表的dao对象 Dao<Dict,Integer> dictDao = dbHelper.getDictDao(); //插入对应的数据 Dict dict = new Dict(); dict.setWord(word); dict.setInterpret(interpret); try { //通过 *** 作实体对象的形式将数据插入到表中 dictDao.createIfNotExists(dict); } catch (sqlException e) { e.printstacktrace(); } break; case R.ID.btn_read: //读取数据 Dao<Dict ,Integer> dictList = dbHelper.getDictDao(); try { List<Dict> dictDataList = dictList.queryForAll(); StringBuffer strBuffer = new StringBuffer(); for(int i =0;i<dictDataList.size();i++){ strBuffer.append("第"+i+"位置的word="+dictDataList.get(i).getWord()+";单词的含义"+dictDataList.get(i).getInterpret()+"\n"); } Toast.makeText(MainActivity.this, strBuffer.toString(), Toast.LENGTH_SHORT).show(); } catch (sqlException e) { e.printstacktrace(); } break; case R.ID.btn_query: //查询数据 Dao<Dict,Integer> dictWhereDao = dbHelper.getDictDao(); //获取对应表或实体的查询构造者 queryBuilder<Dict,Integer> queryBuilder = dictWhereDao.queryBuilder(); try { queryBuilder.selectColumns(new String[]{"tword","interpret"}).where().like("tword","%af%") .or().like("tword","%AF%"); queryBuilder.orderBy("tword",true); //执行查询 List<Dict> dictWhereList = queryBuilder.query(); StringBuffer strBuffer = new StringBuffer(); for(int i =0;i<dictWhereList.size();i++){ strBuffer.append("第"+i+"位置的word="+dictWhereList.get(i).getWord()+";单词的含义"+dictWhereList.get(i).getInterpret()+"\n"); } Toast.makeText(MainActivity.this, strBuffer.toString(), Toast.LENGTH_SHORT).show(); } catch (sqlException e) { e.printstacktrace(); } break; } }}
4.新建第一个列表由于在创建数据库出错太多了,浪费了很多时间,没有继续卸载去了。明日再来创建列表。
总结以上是内存溢出为你收集整理的学习日志全部内容,希望文章能够帮你解决学习日志所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)