1、创建表
然后要要创建一个实体类,对应表结构。OrmLite提供了两个注解,@DatabaseField 代表表列名,@DatabaseTable 表名 tableName值为数据库中表的真实名称。下列的User类必须有一个无参数的构造函数。
@DatabaseTable
public class Person {
@DatabaseField(columnName = "id",generatedId = true)
int id;
@DatabaseField
String name;
@DatabaseField
int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、创建dbHelper
public class MyDBHelper extends OrmLiteSqliteOpenHelper {
private static MyDBHelper dbHelper;
public static MyDBHelper getInstance(Context context, String dbname){
if(dbHelper==null){
synchronized (MyDBHelper.class) {
if(dbHelper==null){
dbHelper=new MyDBHelper(context,dbname);
}
}
}return dbHelper;
}
public MyDBHelper(Context context, String dbname) {
super(context, dbname, null, 1);
}
@Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
try {
TableUtils.createTable(arg1, Person.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
int arg3) {
try {
TableUtils.dropTable(arg1, Person.class, true);
onCreate(arg0,arg1);
} catch (SQLException e) {
e.printStackTrace();
}
}
3、写工具类,实现增删改查的功能
public class MyDBUtil {
MyDBHelper dbHelper;
private Dao<Person, String> dao;
public MyDBUtil(Context context, String dbname) {
dbHelper=MyDBHelper.getInstance(context,dbname);
try {
dao=dbHelper.getDao(Person.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 增加个人信息
* @param bean
*/
public void add(Person bean){
try {
dao.create(bean);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 批量增加个人信息
*
*/
public void addList(List<Person> persons){
try {
dao.create(persons);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 删除个人信息
*/
public void delete(Person p){
try {
dao.delete(p);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 批量删除个人信息
*/
public void deleteList(List<Person> persons){
try {
dao.delete(persons);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 更新个人信息
*/
public void update(Person p){
try {
dao.createOrUpdate(p);//存在则更新 不存在则创建
// mDbHelperDao.update(p);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 查询所有个人信息
*/
public List<Person> queryAll(){
List<Person> persons = null;
try {
persons = dao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return persons;
}
/**
* 条件查询
* @param tag
* @param content
* @return
*/
public List<Person> queryList(String tag,String content){
List<Person> persons=null;
try {
persons = dao.queryBuilder().where().eq(tag,content).query();
} catch (SQLException e) {
e.printStackTrace();
}
return persons;
}
}
4.MainActivity代码,实现数据库操作
“`
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
private Button mBtn5;
private Button mBtn6;
private Button mBtn7;
private ListView mListView;
private List mPersons;
MyAdapter mAdapter;
MyDBUtil dbUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
initData();
}
private void initView() {
dbUtil=new MyDBUtil(this,”person_test”);
mBtn1 = (Button) findViewById(R.id.id_add_one);
mBtn2 = (Button) findViewById(R.id.id_add_list);
mBtn3 = (Button) findViewById(R.id.id_query_list);
mBtn4 = (Button) findViewById(R.id.id_query_all);
mBtn5 = (Button) findViewById(R.id.id_update);
mBtn6 = (Button) findViewById(R.id.id_delete_one);
mBtn7 = (Button) findViewById(R.id.id_delete_list);
mListView = (ListView) findViewById(R.id.id_listview);
mPersons = new ArrayList<>();
mAdapter=new MyAdapter(this);
mListView.setAdapter(mAdapter);
}
private void initData() {
if (dbUtil.queryAll() != null) {
mPersons = dbUtil.queryAll();
}
mAdapter.notifyDataSetChanged();
}
private void initListener() {
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
mBtn4.setOnClickListener(this);
mBtn5.setOnClickListener(this);
mBtn6.setOnClickListener(this);
mBtn7.setOnClickListener(this);
//点击删除
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Person person = mPersons.get(position);
dbUtil.delete(person);
mPersons.remove(position);
mAdapter.notifyDataSetChanged();
}
});
//长按更新
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Person person = mPersons.get(position);
person.setName("神灵");
dbUtil.update(person);
mPersons.clear();
mPersons=dbUtil.queryAll();
mAdapter.notifyDataSetChanged();
return false;
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.id_add_one:
add();//添加一条数据
break;
case R.id.id_add_list:
addList();//批量添加数据
break;
case R.id.id_query_list:
query("name","卡尔");//查询姓名为卡尔的所有数据
break;
case R.id.id_query_all:
queryAll();//查询所有数据
break;
case R.id.id_update:
update();//更新一条数据
break;
case R.id.id_delete_one:
//delete(3);
break;
case R.id.id_delete_list:
deleteList("name","神灵");//删除姓名为神灵的数据
break;
}
}
/**
* 删除批量数据
* @param name
* @param content
*/
private void deleteList(String name, String content) {
mPersons.clear();
List<Person> persons=dbUtil.queryList(name,content);
dbUtil.deleteList(persons);
mPersons=dbUtil.queryAll();
mAdapter.notifyDataSetChanged();
}
/**
* 全部查询
*/
private void queryAll() {
mPersons.clear();
mPersons=dbUtil.queryAll();
mAdapter.notifyDataSetChanged();
}
/**
* 条件查询
* @param name
* @param content
*/
private void query(String name, String content) {
mPersons.clear();
mPersons=dbUtil.queryList(name,content);
mAdapter.notifyDataSetChanged();
}
/**
* 批量插入
*/
private void addList() {
List<Person> persons=new ArrayList<>();
for (int i = 0; i <5 ; i++) {
Person p=new Person("卡尔",20);
persons.add(p);
}
dbUtil.addList(persons);
mPersons.clear();
mPersons=dbUtil.queryAll();
mAdapter.notifyDataSetChanged();
}
/**
* 更新一个
*/
private void update() {
Person p=mPersons.get(0);
p.setName("神灵");
dbUtil.update(p);
mPersons.clear();
mPersons=dbUtil.queryAll();
mAdapter.notifyDataSetChanged();
}
/**
* 添加一个
*/
private void add() {
Person person=new Person("蓝猫",19);
dbUtil.add(person);
mPersons.add(person);
mAdapter.notifyDataSetChanged();
}
public class MyAdapter extends BaseAdapter {
Context context;
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return mPersons.size();
}
@Override
public Person getItem(int position) {
return mPersons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if(convertView==null){
convertView= LayoutInflater.from(context).inflate(R.layout.item,null);
vh=new ViewHolder();
vh.tv= (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(vh);
}else{
vh= (ViewHolder) convertView.getTag();
}
vh.tv.setText(mPersons.get(position).getName()+mPersons.get(position).getAge());
return convertView;
}
class ViewHolder{
TextView tv;
}
}
}