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

     每次关闭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))");
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值