pull解析
创建一个asset目录
创建一个xml文件
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<map>
<qq>123456</qq>
<pwd>abc</pwd>
</map>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
AssetManager manager = getAssets();
InputStream fis = manager.open("qqinfo.xml");
XmlPullParser parser = Xml.newPullParser();
parser.setInput(fis,"utf-8");
int eventType = parser.getEventType();
while((eventType=parser.next())!=XmlPullParser.END_DOCUMENT){
if (eventType==XmlPullParser.START_TAG&&"qq".equals(parser.getName())) {
Log.v("meeee",parser.nextText());
}
if (eventType==XmlPullParser.START_TAG&&"pwd".equals(parser.getName())) {
Log.v("meeee",parser.nextText());
}
}
} catch (Exception e) {
}
}
SQLite数据库
1.创建一的类继承SQLiteOpenHelper
public class MyDpOpenHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "contacts.db";
public static final int DB_VERSION=1;
/**
* @param name 数据库的名称
* @param factory 创建数据库游标对象的工厂 该参数可以q为null,形参可以删除
* @param version 版本 为int类型
*/
public MyDpOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table contacts(_id integer primary key autoincrement,username text,number text);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.创建一个操作数据库的帮助类
public class ContactDao {
private MyDpOpenHelper mHelper;
public ContactDao(Context c){
mHelper = new MyDpOpenHelper(c);
}
public void saveContacts(String name ,String pwd){
SQLiteDatabase db = mHelper.getWritableDatabase();
db.execSQL("insert into contacts(username,number) values (?,?);",new String[]{name,pwd});
}
public void updateContact(String name, String number){
SQLiteDatabase db = mHelper.getWritableDatabase();
db.execSQL("iupdate contactsinfo set number =? where username = ?;"
,new String[]{number,name});
}
public String queryContact(String name ){
SQLiteDatabase db = mHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select number from contactsinfo where username = ?;",new String[]{name});
while(cursor.moveToNext()){
String number = cursor.getString(0);
return number;
}
return null;
}
public void deleteContacts(String name){
SQLiteDatabase db = mHelper.getWritableDatabase();
db.execSQL("delete from contactsinfo where ? = '张三';",new String[]{name});
}
}
mDao = new ContactDao(this);
MyDpOpenHelper dbhelper =new MyDpOpenHelper(this);
SQLiteDatabase readdb = dbhelper.getReadableDatabase();
SQLiteDatabase wdb = dbhelper.getWritableDatabase();
Litepal的使用
1.导包
Gradle:
compile 'org.litepal.android:core:1.5.1'
2.在asset目录下创建一个litepal.xml,通过反射实现
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!-- 指定数据库文件的名称 -->
<dbname value="users" />
<!-- 指定数据库的版本 -->
<version value="1" />
<--对象映射-->
<list>
<mapping class="com.example.UserInfo" />
</list>
</litepal>
3.创建一个bean类继承于DataSupport
public class UserInfo extends DataSupport {
private String username;
private String phone;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
4.在manifest中配置application的name属性
<application
android:name="com.example.LitePalApplication"
不过这样就无法自定义application了
为此,也可以这样:
<application
android:name="com.example.MyApplication"
但还需要
public class MyApplication extends AnotherApplication {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
}
5.操作方法
SQLiteDatabase db = LitePal.getDatabase();
Album album = new Album();
album.setName("album");
album.setPrice(10.99f);
album.setCover(getCoverImageBytes());
album.save();
Album albumToUpdate = DataSupport.find(Album.class, 1);
albumToUpdate.setPrice(20.99f);
albumToUpdate.save();
也可以这样更新
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f);
albumToUpdate.update(id);
更新全部
Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f);
albumToUpdate.updateAll("name = ?", "album");
DataSupport.delete(Song.class, id);
DataSupport.deleteAll(Song.class, "duration > ?" , "350");
Song song = DataSupport.find(Song.class, id);
List<Song> allSongs = DataSupport.findAll(Song.class);
List<Song> songs = DataSupport.where("name like ?", "song%").order("duration").find(Song.class);
-keep class org.litepal.** {
*;
}
-keep class * extends org.litepal.crud.DataSupport {
*;
}