Android 中数据库的简单使用
2017-01-09 18:01
232 查看
Android 中使用的数据库并不是我们经常在web中使用的mySql , 而是一个轻量级、嵌入式的数据库SQLite。下面是简单的使用方法:
一 、创建数据库的管理类
二、创建一个实体类
三、 实现数据库的操作类
四、实现添加
此时,可以把表导出来看看
已经成功了。
以上只是简单的实现了添加数据的方法,下面是完整的代码。
数据库的实现方式一:
第一种方式的缺点就是没有返回值,无法知道操作是否成功
第二种数据库的操作方式:
getReadableDatabase() 和 getWritableDatabase()的区别:
后者以只写方式打开数据库,如果磁盘满了,就报错;而前者先以写得方式打开数据库,如果磁盘满了,就以只读的方式打开。
数据库的事物
一 、创建数据库的管理类
package com.example.guang.lop.vm.helper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by guang on 2017/1/9. * 这个类是数据库的帮助类,实现数据库的创建和更新 */ public class MyDataBaseOpenHelper extends SQLiteOpenHelper{ /* * 构造方法只用传入一个Context,数据库的名字在这里制定,factory置为null,版本号初始化为1, * 4.0以前,版本号可以降级,4.0以后,版本号不可以降级 * */ public MyDataBaseOpenHelper(Context context) { super(context, "mydata.db", null, 1); } /* * 这个方法只有在数据库创建的时候才会执行,即只会执行一次 * 用于数据库的表的初始化 * id 记得前面加_ ,autoincrement中间没有横杠 * */ @Override public void onCreate(SQLiteDatabase db) { String sql="create table myinfo (_id integer primary key autoincrement,name varchar(20),age integer,job varchar(128))"; db.execSQL(sql); } /** * 此方法用于数据库的更新,只有在版本号升级的时候才会执行 * * **/ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
二、创建一个实体类
package com.example.guang.lop.model; /** * Created by guang on 2017/1/9. */ public class MyUser { private int id; private String name; private int age; private String job; public MyUser(){ } public My 4000 User(String name,int age,String job){ this.name=name; this.age=age; this.job=job; } 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; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } }
三、 实现数据库的操作类
package com.example.guang.lop.vm.helper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.example.guang.lop.model.MyUser; /** * Created by guang on 2017/1/9. * 实现数据库增删改查的第一种方法 */ public class UserInfoDao { private final MyDataBaseOpenHelper helper; public UserInfoDao(Context context){ helper = new MyDataBaseOpenHelper(context); } /*实现添加数据的方法*/ public void add(MyUser user){ SQLiteDatabase database=helper.getReadableDatabase(); database.execSQL("insert into myinfo (name,age,job) values(?,?,?)",new Object[]{user.getName(),user.getAge(),user.getJob()}); database.close(); } }
四、实现添加
package com.example.guang.lop.vm.activity; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.guang.lop.R; import com.example.guang.lop.model.MyUser; import com.example.guang.lop.vm.helper.MyDataBaseOpenHelper; import com.example.guang.lop.vm.helper.UserInfoDao; public class MyDataBaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_data_base); UserInfoDao userInfoDao = new UserInfoDao(this); MyUser user=new MyUser("aguang",27,"coder"); userInfoDao.add(user); MyUser user1=new MyUser("小明",12,"sutdent"); userInfoDao.add(user1); MyUser use2r=new MyUser("小美",18,"girl"); userInfoDao.add(use2r); MyUser user3=new MyUser("丽丽",23,"teacher"); userInfoDao.add(user3); } }
此时,可以把表导出来看看
已经成功了。
以上只是简单的实现了添加数据的方法,下面是完整的代码。
数据库的实现方式一:
package com.example.guang.lop.vm.activity; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.guang.lop.R; import com.example.guang.lop.model.MyUser; import com.example.guang.lop.vm.helper.MyDataBaseOpenHelper; import com.example.guang.lop.vm.helper.UserInfoDao; public class MyDataBaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_data_base); UserInfoDao userInfoDao = new UserInfoDao(this); /* // 增加数据 MyUser user=new MyUser("aguang",27,"coder"); userInfoDao.add(user); MyUser user1=new MyUser("小明",12,"sutdent"); userInfoDao.add(user1); MyUser use2r=new MyUser("小美",18,"girl"); userInfoDao.add(use2r); MyUser user3=new MyUser("丽丽",23,"teacher"); userInfoDao.add(user3);*/ //删除数据 /*String name="aguang"; userInfoDao.delete(name);*/ //修改数据 /*MyUser user4=new MyUser("小美",22,"girl"); userInfoDao.update(user4);*/ //查询数据 // MyUser user=new MyUser("aguang",27,"coder"); // userInfoDao.add(user); userInfoDao.query(0); } }
package com.example.guang.lop.vm.helper; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.example.guang.lop.model.MyUser; import com.orhanobut.logger.Logger; /** * Created by guang on 2017/1/9. * 实现数据库增删改查的第一种方法 */ public class UserInfoDao { private final MyDataBaseOpenHelper helper; public UserInfoDao(Context context){ helper = new MyDataBaseOpenHelper(context); } /*实现添加数据的方法*/ public void add(MyUser user){ SQLiteDatabase database=helper.getReadableDatabase(); database.execSQL("insert into myinfo (name,age,job) values(?,?,?)",new Object[]{user.getName(),user.getAge(),user.getJob()}); database.close(); } /*实现数据删除的方法*/ public void delete(String name){ SQLiteDatabase database=helper.getReadableDatabase(); database.execSQL("delete from myinfo where name=?",new Object[]{name}); database.close(); } /*实现数据修改的方法*/ public void update(MyUser user){ SQLiteDatabase database=helper.getReadableDatabase(); database.execSQL("update myinfo set age =? where name=?",new Object[]{user.getAge(),user.getName()}); database.close(); } /*实现数据查询的方法*/ public void query(int age){ SQLiteDatabase database=helper.getReadableDatabase(); Cursor cursor=database.rawQuery("select name,age,job from myinfo where age>?",new String[]{"0"}); if(cursor !=null && cursor.getCount()>0){ while(cursor.moveToNext()){ String userName=cursor.getString(cursor.getColumnIndex("name")); int userAge=cursor.getInt(cursor.getColumnIndex("age")); String userJob=cursor.getString(cursor.getColumnIndex("job")); Logger.d(userName+"--"+userAge+"--"+userJob); } } cursor.close(); database.close(); } }
第一种方式的缺点就是没有返回值,无法知道操作是否成功
第二种数据库的操作方式:
package com.example.guang.lop.vm.helper; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.example.guang.lop.model.MyUser; import com.orhanobut.logger.Logger; import java.util.ArrayList; import java.util.List; /** * Created by guang on 2017/1/ b73a 9. */ public class UserInfoDao2 { private final MyDataBaseOpenHelper helper; public UserInfoDao2(Context context){ helper = new MyDataBaseOpenHelper(context); } /** * 增加数据 * **/ public boolean add(MyUser user){ SQLiteDatabase database=helper.getReadableDatabase(); ContentValues values=new ContentValues(); values.put("name",user.getName()); values.put("age",user.getAge()); values.put("job",user.getJob()); long res=database.insert("myinfo",null,values); database.close(); if(res==-1){ return false; }else{ return true; } } /*删除数据*/ public int delelte(String name){ SQLiteDatabase database=helper.getReadableDatabase(); int res=database.delete("myinfo","name=?",new String[]{name}); database.close(); return res; } /** *修改数据 * **/ public int update(MyUser user){ SQLiteDatabase database = helper.getReadableDatabase(); ContentValues values = new ContentValues(); values.put("age",88); int res = database.update("myinfo",values,"name=?",new String[]{user.getName()}); database.close(); return res; } /*查询数据*/ public ArrayList<MyUser> select(){ ArrayList<MyUser> mArrayList=new ArrayList<MyUser>(); SQLiteDatabase database = helper.getReadableDatabase(); Cursor cursor = database.query("myinfo",new String[]{"name","age","job"},null,null,null,null,null); if(cursor != null && cursor.getCount()>0){ while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); String job=cursor.getString(cursor.getColumnIndex("job")); MyUser user = new MyUser(name,age,job); mArrayList.add(user); } } cursor.close(); database.close(); return mArrayList; } }
package com.example.guang.lop.vm.activity; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.guang.lop.R; import com.example.guang.lop.model.MyUser; import com.example.guang.lop.vm.helper.MyDataBaseOpenHelper; import com.example.guang.lop.vm.helper.UserInfoDao; import com.example.guang.lop.vm.helper.UserInfoDao2; import com.orhanobut.logger.Logger; import java.util.ArrayList; public class MyDataBaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_data_base); UserInfoDao2 userInfoDao2=new UserInfoDao2(this); //添加数据 /* MyUser user1 = new MyUser("a001",22,"pilot"); MyUser user2 = new MyUser("a002",11,"printer"); MyUser user3 = new MyUser("a003",15,"worker"); MyUser user4 = new MyUser("a004",34,"CEO"); MyUser user5 = new MyUser("a006",22,"king"); userInfoDao2.add(user1); userInfoDao2.add(user2); userInfoDao2.add(user3); boolean isOK=userInfoDao2.add(user5); if(isOK){ Logger.d("success"); }else{ Logger.d("not success"); }*/ //删除数据 /* int res=userInfoDao2.delelte("a001"); Logger.d("res: "+res);*/ //修改数据 /* MyUser user5 = new MyUser("a006",22,"king"); int resUpdate=userInfoDao2.update(user5); Logger.d(resUpdate);*/ //查询数据 ArrayList<MyUser> mResult = userInfoDao2.select(); Logger.d(mResult.size()); } }
getReadableDatabase() 和 getWritableDatabase()的区别:
后者以只写方式打开数据库,如果磁盘满了,就报错;而前者先以写得方式打开数据库,如果磁盘满了,就以只读的方式打开。
数据库的事物
database.beginTransaction(); try{ //要执行的代码 database.setTransactionSuccessful(); }finally { database.endTransaction(); }
相关文章推荐
- Android greenDAO 数据库 简单学习之基本使用
- Android数据库SQLite的简单使用
- android简单的数据库使用查询操作示例
- Android 数据库框架Room的简单使用
- Android greenDAO 数据库 简单学习之基本使用
- android数据库框架SugarORM的简单使用
- Android greenDao数据库的简单使用(一)
- android关于数据库SQLite的简单使用
- Android数据库SQLite使用详解二 : 学生管理系统的简单实现
- (4.2.9.1) Android数据库框架-Archiver(LiteOrm)的简单使用(一)
- android 数据库 SQLiteExpertPers的简单使用
- sqlite的简单使用,Android中数据库的简单使用
- Android 数据库的简单使用
- android ORM数据库框架ActiveAndroid的简单使用
- Android数据库之ormlite简单使用
- [Android] 好用的数据库Realm 简单使用 增删改查
- 条件数据库Android:sqllite的简单使用
- Android编写简单的手机通讯录,只是存到数据库里面,并没有显示出来,下次更新显示到自定义适配器的通讯录(这个只是教大家SQLite数据库如何使用)
- android ormlite简单使用和读取sdcard下db数据库
- android数据库框架LitePal的简单使用