zoukankan      html  css  js  c++  java
  • Android数据的几种存储方式和方法

    sharedPreference入门

    1.保存信息

    SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);

    Editor editor = sp.edit();

    editor.putString("username", username);

    editor.putString("password", password);

    editor.commit();

    2.获取信息

    SharedPreferences sp = this.getSharedPreferences("config", Context.MODE_PRIVATE);

    sp.getString("username", "");

    sp.getString("password", "");

    ?

    xml文件的序列化

    ?

    public void save(View view) {

     XmlSerializer xmlSerializer = Xml.newSerializer();

    File file = new File(Environment.getExternalStorageDirectory(),

    "config.xml");

    try {

    FileOutputStream fos = new FileOutputStream(file);

    xmlSerializer. setOutput(fos, "utf-8");

    xmlSerializer. startDocument("utf-8", true);

    xmlSerializer. startTag(null, "smss");

    for (SmsInfo info : infos) {

    xmlSerializer.startTag(null, "sms");

    xmlSerializer. attribute(null, "id", info.getId() + "");

    xmlSerializer.startTag(null, "date");

    xmlSerializer. text(info.getDate() + "");

    xmlSerializer.endTag(null, "date");

    xmlSerializer.startTag(null, "address");

    xmlSerializer.text(info.getAddress());

    xmlSerializer.endTag(null, "address");

    xmlSerializer.startTag(null, "body");

    xmlSerializer.text(info.getBody());

    xmlSerializer.endTag(null, "body");

    xmlSerializer.endTag(null, "sms");

    }

    xmlSerializer.endTag(null, "smss");

    xmlSerializer.endDocument();

    fos.close();

    Toast.makeText(this, "保存成功", 0).show();

    } catch (Exception e) {

    e.printStackTrace();

    Toast.makeText(this, "保存失败", 0).show();

    }

    }

    采用pull解析xml文件

    1.准备一个xml文件,将其拷贝到工程的src目录下

    <?xml version="1.0" encoding="utf-8"?>

    <infos>

    <city id="1">

    <temp>20'C/30'C</temp>

    <weather>多云</weather>

    <wind>南风3级</wind>

    <name>上海</name>

    <pm>200</pm>

    </city>

    <city id="2">

    <temp>20'C/35'C</temp>

    <weather>暴雨</weather>

    <wind>南风10级</wind>

    <name>北京</name>

    <pm>800</pm>

    </city>

    <city id="3">

    <temp>0'C/10'C</temp>

    <weather>暴雪</weather>

    <wind>北风32级</wind>

    <name>广州</name>

    <pm>200</pm>

    </city>

    </infos>

    2.核心代码

    public static ArrayList<WeatherInfo> getWeatherInfo(InputStream is)

    throws Exception {

    ArrayList<WeatherInfo> infos = null;

    WeatherInfo info = null;

     // XmlPullParser parser = Xml.newPullParser();

    XmlPullParserFactory fac = XmlPullParserFactory.newInstance();

    XmlPullParser parser = fac.newPullParser();

    parser.setInput(is, "utf-8");

    int type = parser.getEventType();

    while (type != XmlPullParser.END_DOCUMENT) {

    switch (type) {

    case XmlPullParser.START_TAG:

    if ("infos".equals(parser.getName())) {

    infos = new ArrayList<WeatherInfo>();

    } else if ("city".equals(parser.getName())) {

    info = new WeatherInfo();

    info.setId(Integer.parseInt(parser.getAttributeValue(0)));

    } else if ("temp".equals(parser.getName())) {

    info.setTemp(parser.nextText());

    } else if ("weather".equals(parser.getName())) {

    info.setWeather(parser.nextText());

    } else if ("wind".equals(parser.getName())) {

    info.setWind(parser.nextText());

    } else if ("name".equals(parser.getName())) {

    info.setName(parser.nextText());

    } else if ("pm".equals(parser.getName())) {

    info.setPm(parser.nextText());

    }

    break;

    case XmlPullParser.END_TAG:

    if ("city".equals(parser.getName())) {

    infos.add(info);

    info = null;

    }

    break;

    }

    type = parser.next();

    }

    return infos;

    }

    3.调用

    public class WeatherActivity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    TextView tv_info = (TextView) this.findViewById(R.id.vt_info);

    try {

    ArrayList<WeatherInfo> infos = WeaterService

    .getWeatherInfo(WeatherActivity.class.getClassLoader()

    .getResourceAsStream("weather.xml"));

    StringBuffer sb = new StringBuffer();

    for (WeatherInfo info : infos) {

    sb.append(info);

    sb.append("\n");

    }

    tv_info.setText(sb.toString());

    } catch (Exception e) {

    e.printStackTrace();

    Toast.makeText(this, "xml解析失败", 0).show();

    }

    }

    }

    android下创建一个sqlite数据库

    public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {

    private static final String DBFILENAME = "person.db";

    private static int db_version = 2;

    public PersonSQLiteOpenHelper(Context context) {

    super(context, DBFILENAME, null, db_version);

    }

    /**

     * 当数据库第一次创建时调用

     */

    @Override

    public void onCreate(SQLiteDatabase db) {

    String sql = "create table person(id integer primary key autoincrement,name varchar(20),number varchar(20))";

    db.execSQL(sql);

    }

    /**

     * 当数据库的版本号发生增加的时候调用

     */

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    System.out.println("数据库更改!");

    String sql = "alter table person add account varchar(20)";

    db.execSQL(sql);

    }

    }

    sql语句实现数据库的增删改查

    1.添加条目

    public void add(String name, String number) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    db.execSQL("insert into person(name,number) values(?,?)", new Object[] {

    name, number });

    db.close();

    }

    2.查找条目是否存在

    public boolean find(String name) {

    SQLiteDatabase db = this.helper.getReadableDatabase();

    Cursor cursor = db.rawQuery("select * from person where name=?",

    new String[] { name });

    boolean result = cursor.moveToNext();

    cursor.close();

    db.close();

    return result;

    }

    3.更新条目

    public void update(String name, String newNumber) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    db.execSQL("update person set number=? where name=?", new Object[] {

    newNumber, name });

    db.close();

    }

    4.删除条目

    public void delete(String name) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    db.execSQL("delete from person where name=?", new Object[] { name });

    db.close();

    }

    5.查找所有条目

    public ArrayList<Person> findAll() {

    SQLiteDatabase db = this.helper.getReadableDatabase();

    ArrayList<Person> persons = new ArrayList<Person>();

    Cursor cursor = db.rawQuery("select * from person", null);

    while (cursor.moveToNext()) {

    int id = cursor.getInt(cursor.getColumnIndex("id"));

    String name = cursor.getString(cursor.getColumnIndex("name"));

    String number = cursor.getString(cursor.getColumnIndex("number"));

    Person p = new Person(id, name, number);

    persons.add(p);

    }

    cursor.close();

    db.close();

    return persons;

    }

    系统api实现数据库的增删改查&sqlite3工具的使用

    1.添加条目

    public long add(String name, String number) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put("name", name);

    values.put("number", number);

    long id = db.insert("person", null, values);

    db.close();

    return id;

    }

    2.查找条目是否存在

    public boolean find(String name) {

    SQLiteDatabase db = this.helper.getReadableDatabase();

    Cursor cursor = db.query("person", null, "name=?",

    new String[] { name }, null, null, null);

    boolean result = cursor.moveToNext();

    cursor.close();

    db.close();

    return result;

    }

    3.更新条目

    public int update(String name, String newNumber) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put("number", newNumber);

    int number = db.update("person", values, "name=?",

    new String[] { name });

    db.close();

    return number;

    }

    4.删除条目

    public int delete(String name) {

    SQLiteDatabase db = this.helper.getWritableDatabase();

    // db.execSQL("delete from person where name=?", new Object[] { name });

    int number = db.delete("person", "name=?", new String[] { name });

    db.close();

    return number;

    }

    5.查找所有条目

    public ArrayList<Person> findAll() {

    SQLiteDatabase db = this.helper.getReadableDatabase();

    ArrayList<Person> persons = new ArrayList<Person>();

    Cursor cursor = db.query("person", null, null, null, null, null, null);

    while (cursor.moveToNext()) {

    int id = cursor.getInt(cursor.getColumnIndex("id"));

    String name = cursor.getString(cursor.getColumnIndex("name"));

    String number = cursor.getString(cursor.getColumnIndex("number"));

    Person p = new Person(id, name, number);

    persons.add(p);

    }

    cursor.close();

    db.close();

    return persons;

    }

    数据库的事务

    public void testTransaction() {

    PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());

    SQLiteDatabase db = helper.getWritableDatabase();

     db.beginTransaction();

    try {

    db.execSQL(

    "update person set account = account + 1000 where name=?",

    new Object[] { "tom" });

    int i = 1 / 0;

    db.execSQL(

    "update person set account = account - 1000 where name=?",

    new Object[] { "jerry" });

     db.setTransactionSuccessful();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

     db.endTransaction();

                            db.close(); 

                    }

    }

        

  • 相关阅读:
    (十一)MySQL语法-外连接
    公司框架-微服务-代码修改
    公司框架-微服务-从前端找到后端
    (十)mysql语法-连接查询
    (九)mysql语法-分组函数和多表连接查询
    安装最新版navicat的时候报 rsa public key not find
    【理想流】程序员的性格和命运 . 分类: 项目管理 2014-06-14 14:56 221人阅读 评论(0) 收藏
    项目经理修炼之道(2) -- 必须读的书 . 分类: 项目管理 2014-06-14 14:54 265人阅读 评论(0) 收藏
    项目经理修炼之道(1) -- 给软件开发建模 . 分类: 项目管理 2014-06-14 14:53 264人阅读 评论(0) 收藏
    【理想流】项目管理本质论 . 分类: 项目管理 2014-06-14 14:51 183人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469838.html
Copyright © 2011-2022 走看看