android下的数据库创建

1.在Android下先创建数据库

package com.example.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseHelper extends SQLiteOpenHelper {
	// 名称
	private static final String DATABASENAME = "csdn.db";
	// 旧的版本好会被记住
	private static int dataBaseVersion = 3;

	// 构造函数不是方法的重写
	// factory cursor 的前工厂对象 默认 null
	// name 数据库的名称
	/*
	 * public DataBaseHelper(Context context, String name, CursorFactory
	 * factory, int version) { super(context, name, factory, version); }
	 */
	public DataBaseHelper(Context context) {

		super(context, DATABASENAME, null, dataBaseVersion);

	}

	// 第一次常见是调用
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("CREATE TABLE users (userid INTEGER PRIMARY KEY AUTOINCREMENT,uesrname VARCHAR(20))");
	}

	// 当数据库升级时 调用
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

		db.execSQL("ALTER TABLE users ADD userage INTEGER");
		db.execSQL("ALTER TABLE users ADD sex VARCHAR(20)");

	}

}

第二步骤。添加 Test测试  注意在AndroidManifest.xml文件中添加instrumentaction 和uses-library

 <instrumentation android:targetPackage="com.example.sqlite" 
        android:name="android.test.InstrumentationTestRunner"></instrumentation>

  <uses-library android:name="android.test.runner"/>


Test文件

package com.example.sqlite;

import java.util.List;

import com.example.splite.dao.UserDao;

import www.csdn.domain.UserImpl;
import www.csdn.domain.Users;
import android.test.AndroidTestCase;

public class DataBaseTest  extends AndroidTestCase{

	
	
	public void createDataBase(){
		DataBaseHelper dh=new DataBaseHelper(getContext());
		//Y要有标示 必须调用 方法
		dh.getWritableDatabase();
	}
	




第三步.先确定在File Explorer下是否有已经有创建出来的database ,最后文中有一些错误在,使用完db后,要关闭 db,写db.close();



第四步 创建 Class User   实现BaseDao中的方法并插入数据



BaseDao


package com.example.splite.dao;

import java.util.List;

import www.csdn.domain.Users;

public interface BaseDao<T,PK>{

	public boolean insert(T entity);
	
	public boolean update(T entity);
	
	public boolean delete(T entity);
	
	
	public boolean deleteById(PK entity);
	
	public T findById(PK entity);
	public List<T> findAll();
	
}


UserDao

package com.example.splite.dao;

import www.csdn.domain.Users;

public interface UserDao extends BaseDao<Users, Integer>{

}




插入数据文件

package www.csdn.domain;

import java.util.ArrayList;
import java.util.List;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.splite.dao.UserDao;
import com.example.sqlite.DataBaseHelper;

public class UserImpl implements UserDao{

	private DataBaseHelper dataBaseHelper;
		
	public UserImpl(DataBaseHelper dataBaseHelper) {
		super();
		this.dataBaseHelper = dataBaseHelper;
	}

	@Override
	public boolean insert(Users entity) {
		try{
		SQLiteDatabase db=dataBaseHelper.getWritableDatabase();
		db.execSQL("INSERT INTO users(uesrname,userage,sex) VALUES(?,?,?)",new Object[] {entity.getUserName(),entity.getUserAge(),entity.getSex()});
		db.close();
		}catch(Exception e){
			e.printStackTrace();
			return false;
			
		}
		return true;
	}

	@Override
	public boolean update(Users entity) {
		try{
			SQLiteDatabase db=dataBaseHelper.getWritableDatabase();
			db.execSQL("UPDATE users SET uesrname=?,userage=?,sex=? where userid=?",new Object[] {entity.getUserName(),entity.getUserAge(),entity.getSex(),entity.getUserId()});
			db.close();
			}catch(Exception e){
				e.printStackTrace();
				return false;
			}
		return true;
	}

	@Override
	public boolean delete(Users entity) {
		return deleteById(entity.getUserId());
	}

	@Override
	public boolean deleteById(Integer id) {
		try{
			SQLiteDatabase db=dataBaseHelper.getWritableDatabase();
			db.execSQL("delete from users where userid=?",new Object[] {id});
			db.close();
			}catch(Exception e){
				e.printStackTrace();
				return false;
				
			}
		return true;
	}

	@Override
	public Users findById(Integer id) {
		Users entity =new Users();
		SQLiteDatabase db=dataBaseHelper.getWritableDatabase();
		Cursor c=db.rawQuery("select userid,uesrname,sex,userage from users where userid=?", new String[]{id+""});
		if(c.moveToNext()){
			entity.setUserId(c.getInt(c.getColumnIndex("userid")));
			entity.setUserName(c.getString(c.getColumnIndex("uesrname")));
			entity.setSex(c.getString(c.getColumnIndex("sex")));
			entity.setUserAge(c.getInt(c.getColumnIndex("userage")));
		}
		//记得修改返回值
		return entity;
	}

	@Override
	public List<Users> findAll() {
		System.out.println("---------为什么不在这里输出呢----");
		List<Users> entities =new ArrayList<Users>();
		SQLiteDatabase db=dataBaseHelper.getWritableDatabase();
		Cursor c=db.rawQuery("select userid,uesrname,sex,userage from users", null);
		//如果 是if 的话值执行一次  while 是多次循环
		while(c.moveToNext()){
			Users entity=new Users();
			entity.setUserId(c.getInt(c.getColumnIndex("userid")));
			entity.setUserName(c.getString(c.getColumnIndex("uesrname")));
			entity.setSex(c.getString(c.getColumnIndex("sex")));
			entity.setUserAge(c.getInt(c.getColumnIndex("userage")));
			//别忘记添加进entities  restart功能  不用关闭 模拟器
			entities.add(entity);
		}
		//System.out.println(entities);
		//记得修改返回值
		return entities;
	}

	

}

注意一些细节其中findAll()方法中循环便利使用的使用的while而不是if


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值