android下数据库SQLite
一.android下数据库的创建
1.写一个DBOpenHelper继承SQLiteOpenHelper
1.1通过构造函数创建一个数据库
public MyOpenHelper(Context context) {
super(context, "person.db", null, 2);
}
1.2复写方法oncreate()和onUpgrade()
//数据库第一次创建的时候调用
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("数据库被创建了!");
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("数据库版本变化了!");
db.execSQL("alter table person add Tel varchar(20) NULL");
}
2.测试DBOpenHelper,可以在Activity的布局文件中添加button,通过创建监听来实现对数据库的操作
package com.yunchao.db;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MyDbActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void click(View view){
MyOpenHelper dbhelper = new MyOpenHelper(this);
dbhelper.getReadableDatabase();
}
}
二:Android下数据库的增删改查
//读数据库不用加锁,写数据库需要加锁,在某一时刻只能有一个线程写数据库,但是可以有多个线程
读数据库,每秒1000都没有问题
1.创建dao,也就是crud服务
package com.yunchao.db.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.yunchao.db.MyOpenHelper;
import com.yunchao.db.domain.Person;
public class PersonDao {
private MyOpenHelper helper;
public PersonDao(Context context) {
helper=new MyOpenHelper(context);
}
//向数据库中增加数据
public void add(String name,String Tel){
SQLiteDatabase db = helper.getWritableDatabase();
if(db.isOpen()){
//insert into person(name,Tel) values('yunchao','13011808832')
db.execSQL("insert into person(name,Tel) values(?,?)", new Object[]{name,Tel});
db.close();
}
}
//查询数据库中的数据
public boolean find(String name){
boolean result=false;
SQLiteDatabase db = helper.getReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select *from person where name=?", new String[]{name});
if(cursor.moveToFirst()){
result=true;
}
cursor.close();
db.close();
}
return result;
}
//更新数据库的操作
public void update(String newTel,String name,String oldTel){
SQLiteDatabase db = helper.getWritableDatabase();
if(db.isOpen()){
db.execSQL("update person set Tel=? where name=? and Tel=?", new Object[]{newTel,name,oldTel});
db.close();
}
}
//删除数据库中数据的操作
public boolean delete(String name,String Tel){
boolean result=false;
SQLiteDatabase db = helper.getWritableDatabase();
if(db.isOpen()){
db.execSQL("delete from person where name=? and Tel=?", new Object[]{name,Tel});
db.close();
result=true;
}
return result;
}
//查找数据库中的所有数据
public List<Person> findAll(){
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase db = helper.getReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from person", null);
while(cursor.moveToNext()){
int id=cursor.getInt(cursor.getColumnIndex("personid"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String phone=cursor.getString(cursor.getColumnIndex("Tel"));
Person p=new Person(id,name,phone);
persons.add(p);
}
cursor.close();
db.close();
}
return persons;
}
}
2.测试dao
package com.yunchao.db.test;
import java.util.List;
import com.yunchao.db.dao.PersonDao;
import com.yunchao.db.domain.Person;
import android.test.AndroidTestCase;
public class TestPersonDao extends AndroidTestCase {
public void testadd() throws Exception{
PersonDao dao = new PersonDao(getContext());
for(int i=0;i<20;i++){
dao.add("zhangsan"+i, "1589080");
}
}
public void testfind() throws Exception{
PersonDao dao = new PersonDao(getContext());
boolean result=dao.find("zhangsan");
assertEquals(true, result);
}
public void testupdate() throws Exception{
PersonDao dao = new PersonDao(getContext());
dao.update("112", "zhangsan", "1589080");
}
public void testdelete() throws Exception{
PersonDao dao = new PersonDao(getContext());
boolean result = dao.delete("zhangsan9", "1589080");
assertEquals(true, result);
}
public void testfindAll() throws Exception{
PersonDao dao = new PersonDao(getContext());
List<Person> persons=dao.findAll();
System.out.println(persons.size());
}
}
本文出自 “蒲公英的梦想” 博客,转载请与作者联系!
更多相关文章
- Android(安卓)数据存储 之 SQLite数据库详解
- android写入联系人Contacts的信息,包括联系人的姓名,联系方式和邮
- android中ListView数据刷新时的同步方法
- Android无EditText时获取扫描设备的扫描结果
- Android(安卓)-- CursorAdapter
- Android(安卓)TTS学习――TTS初体验(中)
- 开发人员注意——Android(安卓)5.0 API有哪些变化
- android中使用百度定位sdk实时的计算移动距离
- 计算机技术大牛的博客集