Android 中数据库的简单使用
来源:互联网 发布:黑马程序员 课程表 编辑:程序博客网 时间:2024/05/01 04:43
Android 中使用的数据库并不是我们经常在web中使用的mySql , 而是一个轻量级、嵌入式的数据库SQLite。下面是简单的使用方法:
一 、创建数据库的管理类
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 MyUser(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/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(); }
0 0
- Android中sqlite数据库的简单使用
- Android中SQLite数据库的简单使用
- Android 中数据库的简单使用
- sqlite的简单使用,Android中数据库的简单使用
- Android 数据库的简单使用
- android数据库的简单使用
- Android中数据库的使用
- Android 中短信数据库的简单操作
- Android 中短信数据库的简单操作
- Android 中短信数据库的简单操作
- Android 中短信数据库的简单操作
- Android中数据库的简单运用
- Android中的SQLite数据库的简单使用
- Android数据库SQLite的简单使用
- Android:SqliteDatabase 数据库的简单使用
- android 数据库 SQLiteExpertPers的简单使用
- Android使用SQLite数据库的简单实例
- Android之sqlite数据库的简单使用
- Linux文件夹权限777,无法创建文件
- 电脑上用adb连接到Android设备(开发板也可)
- Caffe部署中的几个train-test-solver-prototxt-deploy等说明<二>
- 十大滤波算法
- #611 – 在退出事件中设置退出码(Set Application Exit Code in Exit Event Handler)
- Android 中数据库的简单使用
- POJ 3744 概率 + 分段 + 数学推导 + 快速幂
- 浅谈RxJava与2.0的新特性
- struts1 ActionForm类及表单数据验证
- Java NIO系列教程(一) Java NIO 概述
- TX
- Maven的安装与配置
- 12. Integer to Roman
- BZOJ1984: 月下“毛景树”