您的位置:首页 > 数据库

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

2015-10-27 19:21 316 查看
     每次关闭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))");
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: