一.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());
}


}

本文出自 “蒲公英的梦想” 博客,转载请与作者联系!

更多相关文章

  1. Android(安卓)数据存储 之 SQLite数据库详解
  2. android写入联系人Contacts的信息,包括联系人的姓名,联系方式和邮
  3. android中ListView数据刷新时的同步方法
  4. Android无EditText时获取扫描设备的扫描结果
  5. Android(安卓)-- CursorAdapter
  6. Android(安卓)TTS学习――TTS初体验(中)
  7. 开发人员注意——Android(安卓)5.0 API有哪些变化
  8. android中使用百度定位sdk实时的计算移动距离
  9. 计算机技术大牛的博客集

随机推荐

  1. android RadioGroup设置某一个被选中
  2. Android(安卓)1.5 自带的图标一览表
  3. android时间控件DatePicker使用实例
  4. Android(安卓)ContextMenu上下文菜单
  5. Android(安卓)仿支付宝密码输入页面
  6. Android(安卓)面试:常见问题总结
  7. Android解析XML之XmlPullParser
  8. Android监听HOME键的最简单的方法
  9. android 水平进度对话框
  10. Android之NetworkOnMainThreadException