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