用sqlite保存客户端的账户信息

来源:互联网 发布:数组的存储方式 编辑:程序博客网 时间:2024/06/05 07:54

     每次关闭App后都需要输入账号密码,觉得很不方便,于是准备在用户第一次登陆成功时利用sqlite在客户端保存用户的账户信息,第二次打开App时检查是否有保存的记录,如果有,直接读取后发送登陆请求给服务器。(在密码过期或者重置后会删除本地记录)

这是写好的方法,之前因为写错 SQL语句导致查出来的列与表实际的列不一样。折腾了半天发现是 把*(全部列) 写成 了Count*(只有1列) 

package com.example.panda.easyexpress10;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;/** * Created by SmallBear on 2015/10/17. */public final class DatabaseHelper {    public static boolean IsSaved(Context context){        SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();        Cursor cursor = db.rawQuery("select * from User", null);        System.out.println("------------------------------数据库一共" + (cursor.getCount()) +"行"+cursor.getColumnCount()+"列");        System.out.println("------------------------------第1列列名是" + (cursor.getColumnName(0))+"第2列列名是" + (cursor.getColumnName(1)) );        System.out.println("------------------------------名为uid的索引是" + (cursor.getColumnIndex("uid")) +"  ");        System.out.println("------------------------------名为psw的索引是" + (cursor.getColumnIndex("psw")) +"  ");       // System.out.println("------------------------------第一行第1列的数据是" + (cursor.getInt(0)) +"  ");      //  System.out.println("------------------------------第一行第1列的数据是" + (cursor.getInt(1)) +"  ");        if (cursor.getCount()>0) {            cursor.moveToFirst();            Varbs.uid=cursor.getInt(cursor.getColumnIndex("uid"));            Varbs.name=cursor.getString(cursor.getColumnIndex("name"));            Varbs.psw=cursor.getString(cursor.getColumnIndex("psw"));            System.out.println("------------------------------用户名是" + (cursor.getInt(cursor.getColumnIndex("name"))) +"  ");            System.out.println("------------------------------密码是" + (cursor.getString(cursor.getColumnIndex("psw"))) +"  ");            db.close();            return true;        }       else {            db.close();            return false;        }    }    public static void Add(Context context,int uid,String name,String psw){        SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();        db.execSQL("insert into User(uid,name,psw) values(?,?,?)", new Object[]{uid,name, psw});        db.close();    }    public static void delete(Context context){        System.out.println("------------------------------正在删除保存的用户信息" );        SQLiteDatabase db= new SQLiteDB(context).getWritableDatabase();        db.execSQL("DELETE FROM User");        db.close();    }}


这个是表结构

package com.example.panda.easyexpress10;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by SmallBear on 2015/10/17. */public class SQLiteDB extends SQLiteOpenHelper {    //类没有实例化,是不能用作父类构造器的参数,必须声明为静态    private static final String name = "AcountDB"; //数据库名称    private static final int version = 5; //数据库版本    public SQLiteDB(Context context) {        //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类        super(context, name, null, version);    }    @Override    public void onCreate(android.database.sqlite.SQLiteDatabase db) {        System.out.println("------------------------------正在创建表" + ("") +" ");        db.execSQL("CREATE TABLE User ( uid integer  ,name varchar(20), psw varchar(20))");    }    @Override    public void onUpgrade(android.database.sqlite.SQLiteDatabase db, int oldVersion, int newVersion) {        System.out.println("------------------------------正在更新表" + ("") +" ");        db.execSQL(" DROP TABLE IF EXISTS User  ");        db.execSQL("CREATE TABLE User ( uid integer  ,name varchar(20), psw varchar(20))");    }}




0 0
原创粉丝点击