写基类的APP类,用于承接上下文
public classAppextendsApplication {
public staticAppappcontext;
@Override
public voidonCreate() {
super.onCreate();
appcontext=this;
}
}
建一个工具类
//加上Static 代表只运行一次,且只复制一次数据库
static{ copyDB(); }
public static voidcopyDB() {
InputStream input =null;
FileOutputStream output =null;
try{
input = App.appcontext.getAssets().open("db/commonnum.db");
File file =newFile(DB_PATH);
if(!file.exists()) file.mkdirs();
output =newFileOutputStream(DB_PATH+ File.separator+DB_NAME);
intlen =0;
byte[] buffer =new byte[1024];
while((len = input.read(buffer)) != -1) {
output.write(buffer,0,len);
}
}catch(IOException e) {
e.printStackTrace();
}finally{
try{
if(output !=null) output.close();
if(input !=null) input.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
举一个例子
/**
* 获取所有的服务类型的名字
*
* @return
*/
public static List<Tel> getTelServiceName() {
List<Tel> tels = new ArrayList<>();
//获取数据库
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + "/" + DB_NAME, null);
//那个要查询的数据库的名字
Cursor cursor = db.rawQuery("select * from classlist;", null);
while (cursor.moveToNext()) {
//重数据库查询名字
String name = cursor.getString(cursor.getColumnIndex("name"));
//从数据库找到对应的ID
int id = cursor.getInt(cursor.getColumnIndex("idx"));
//自己的一个实例类
Tel tel = new Tel(name, id);
//添加到集合中
tels.add(tel);
}
//关闭流,节省资源
cursor.close();
return tels;
}