加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite数据库

发布时间:2020-12-13 00:14:45 所属栏目:百科 来源:网络整理
导读:用adb命令进入sqlite数据库 Adb shell - cd data - cd data -cd com.itheima.db -databases- sqlite3 persons.db (persons.db为数据库名) Select * from person; 操作sqlite数据库(需要借助SQLiteOpenHelper) public class MyDBOpenHelper extends SQLiteO

用adb命令进入sqlite数据库
Adb shell -> cd data -> cd data ->cd com.itheima.db ->databases-> sqlite3 persons.db (persons.db为数据库名)
Select * from person;
操作sqlite数据库(需要借助SQLiteOpenHelper)
public class MyDBOpenHelper extends SQLiteOpenHelper {

/**
*
* @param context 应用程序上下文
* @param name 数据库的名字
* @param factory 查询数据库的游标工厂 一般情况下 用sdk默认的
* @param version 数据库的版本 版本号必须不小1
*
*/
public MyDBOpenHelper(Context context) {
super(context,"itheima.db",null,5);
}

// 在mydbOpenHelper 在数据库第一次被创建的时候 会执行onCreate();
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("我被调用了 oncreate");
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement,name varchar(20))");
}

@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
System.out.println("on update ");
db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL ");
}
}

通过DBOpenHelper对数据库进行增删改查

public class PersonDao {
private static final String TAG = "PersonDao";
private MyDBOpenHelper dbOpenHelper;

// 在personDao被new出来的时候 就完成初始化

public PersonDao(Context context) {
dbOpenHelper = new MyDBOpenHelper(context);
// dbOpenHelper.getReadableDatabase()
// dbOpenHelper.getWritableDatabase()
}

// 增删改查

/**
* 往数据库添加一条数据
*/
public void add(String name,String phone) {
boolean result = find(name);
if (result)
return;

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("insert into person (name,phone) values (?,?)",
new Object[] { name,phone });
// 关闭数据库 释放数据库的链接
db.close();
}
}

/**
* 查找数据库的操作
*/
public boolean find(String name) {
boolean result = false;
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from person where name=?",
new String[] { name });
if (cursor.moveToFirst()) {
int index = cursor.getColumnIndex("phone"); // 得到phone在表中是第几列
String phone = cursor.getString(index);
Log.i(TAG,"phone =" + phone);
result = true;

}
// 记得关闭掉 cursor
cursor.close();
result = false;
// 释放数据库的链接
db.close();
}
return result;
}

/**
* 删除一条记录
*
* @param name
*/
public void delete(String name) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("delete from person where name =?",
new Object[] { name });
db.close();
}
}

/**
* 更新一条记录
*
*/
public void update(String name,String newname,String newphone) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("update person set name=?,phone=? where name=?",
new Object[] { newname,newphone,name });
db.close();
}
}

/**
* 查找全部
*/
public List<Person> getAllPersons() {
List<Person> persons=null;
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if (db.isOpen()) {
persons = new ArrayList<Person>();
Cursor cursor = db.rawQuery("select * from person ",null);
while (cursor.moveToNext()) {
Person person = new Person();
int nameindex = cursor.getColumnIndex("name");
int phoneindex = cursor.getColumnIndex("phone");
String name = cursor.getString(nameindex);
String phone = cursor.getString(phoneindex);
person.setName(name);
person.setNumber(phone);
persons.add(person);
}
cursor.close();
db.close();
}
return persons;
}

} SQLite事务的处理 Db.beginTransaction();开启事务 Try{ Db.execSQL(); Db.setTransactionSuccessful();//调用此方法会在执行到endTransaction()时提交当前事务,如果不调用此方法会回滚事务 }finally{ Db.endTransaction(); } Db.close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读