用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.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))");
}
}
这是写好的方法,之前因为写错 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))");
}
}
相关文章推荐
- mysql 查看表的类型
- Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。
- SQL语句中的Having子句与where子句之区别
- Hbase与Oracle比较(列式数据库与行式数据库)
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- sqlite查询,分页查询
- 关于.net平台开发程序连接oracle数据库查询语句中包含汉字的问题
- MySQL多表联表查询
- IOS使用fmdb操作数据库的方法详解
- 使用 xtrabackup做mysql5.6.10主从
- MySQL最大连接数设置
- MYSQL乐观锁
- mysql悲观锁
- sql面向过程用法
- mongodb服务安装,搭建副本集及原理概述
- mysql-cluster集群-安装篇 双服务器
- mysql 数据库备份方案及策略
- Ubuntu server 15.0.4 Redis相关笔记及配置参数说明
- HA集群之四:Corosync+Pacemaker+DRBD实现HA Mysql
- Oracle中绝对值小于1的小数如何显示小数点前面的0