学习笔记 新浪微博篇 六 Android SQLite 部署篇

1. 首先我们要创建自己的DBHelper类继承SQLiteOpenHelper

作用:这是用来初始化数据库和更新数据库的
位置package DB;
public class DBHelper extends SQLiteOpenHelper{

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context,name, factory,version);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    //初始化表
        db.execSQL(DBinfo.Table.CREATE_TABLE);
    }

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

    }
}

2.然后我们创建DBinfo类 (里面有静态类,静态类里都是静态属性)

这个类是用来封装SQ语句的 还有一些DB的名称和版本

例如DBHelper类里db.execSQL(DBinfo.Table.CREATE_TABLE);这个函数,就是利用了DBinfo类进行数据库操作

位置package DB;
 public class DBinfo
{
    public static class DB
    {
        //数据库名称
        public static final String DB_NAME="weibo";
        //数据库版本
        public static final int VERSION=1;

    }
    public static class Table{
        数据,删除库创建
        public static final String TABLE_NAME="User";
        public static final String CREATE_TABLE1="CREATE TABLE IF NOT EXISTS"+TABLE_NAME+"( _id INTEGER PRIMARY KEY AUTOINCREMENT,uerId TEXT,userName TEXT,token TEXT,tokenSecret TEXT,isDefault TEXT,userIcon BLOB)";
        public static final String CREATE_TABLE="CREATE TABLE IF NOT EXISTS"+" "+TABLE_NAME+"("
                +"_id INTEGER PRIMARY KEY AUTOINCREMENT,"
                +"userId TEXT,"
                +"userName TEXT,"
                +"token TEXT,"
                +"tokenSecret TEXT,"
                +"isDefault TEXT,"
                +"userIcon BLOB)";
        public static final String DROP_TABLE="DROP TABLE"+TABLE_NAME;
    }
}

3. 创建Dao,创建UserInfo类,是一个JAVABEAN,用来统一存储数据

位置package Bean;
import android.graphics.drawable.Drawable;

//用于传入数据

public class UserInfo {
    private int _id;
    private String userId;
    private String userName;
    private String token;
    private String tokenSecret;
    private String isDefault;
    private Drawable userIcon;

    public UserInfo( String userId, String userName, String token, String tokenSecret, String isDefault) {
        this.userId = userId;
        this.userName = userName;
        this.token = token;
        this.tokenSecret = tokenSecret;
        this.isDefault = isDefault;
    }

    public int get_id() {
        return _id;
    }

    public void set_id(int _id) {
        this._id = _id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getTokenSecret() {
        return tokenSecret;
    }

    public void setTokenSecret(String tokenSecret) {
        this.tokenSecret = tokenSecret;
    }

    public String getIsDefault() {
        return isDefault;
    }

    public void setIsDefault(String isDefault) {
        this.isDefault = isDefault;
    }

    public Drawable getUserIcon() {
        return userIcon;
    }

    public void setUserIcon(Drawable userIcon) {
        this.userIcon = userIcon;
    }
}
4.这里是进行数据库实际操作的类
里面包含数据库建立 增加 修改 查询操作
位置Service包
public class UserInfoServices {
    这种只是说明变量
    private static  DBHelper dbHelper;
    private  UserInfo userInfo=new UserInfo();

    private String[] couloms=new String[]{userInfo.ID,userInfo.USER_ID,userInfo.USER_NAME,userInfo.TOKEN,
            userInfo.TOKEN_SECRET,userInfo.IS_DEFAULT,userInfo.USER_ICON};创建数据库放在构造函数中进行

    public UserInfoServices(Context context)
    {
        //这种才是实例化对象
        dbHelper=new DBHelper(context, DBinfo.DB.DB_NAME,null,DBinfo.DB.VERSION);
        dbHelper.getWritableDatabase();
    }

     创建数据库,表


     添加用户信息

    public void insertUserInfo(UserInfo userInfo){
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        ContentValues values= new ContentValues();
        values.put("userId",userInfo.getUserId());
        values.put("userName",userInfo.getUserName());
        values.put("token",userInfo.getToken());
        values.put("tokenSecret",userInfo.getTokenSecret());
        values.put("isDefault",userInfo.getIsDefault());
        db.insert(DBinfo.Table.TABLE_NAME,null,values);
        db.close();
    }

    更新用户信息

    public void updateUserInfo(UserInfo userInfo){
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("token",userInfo.getToken());
        values.put("tokenSecret",userInfo.getTokenSecret());
        db.update(DBinfo.Table.TABLE_NAME,values,"userId=?",new String[]{userInfo.getUserId()});
        db.close();

    }

    查询用户userId

    public String getUserId(String id){


        SQLiteDatabase db = dbHelper.getReadableDatabase();


        Cursor cursor = db.query(DBinfo.Table.TABLE_NAME, null, "userId=?", new String[]{id}, null, null, null);

        if(null != cursor &&  cursor.getCount() >0) {
            cursor.close();
            db.close();
            return "1111";
        }else{
            cursor.close();
            db.close();
            return null;
        }

    }

获取数据库中所有的数据,放在集合中

    public List<UserInfo> findAllUsers()   
    private Handler handler只是声明变量,如果有空指针一定要实例化,这里可以放在构造函数中进行
{
    SQLiteDatabase db =dbHelper.getReadableDatabase();
    List<UserInfo> users=new ArrayList<UserInfo>();
    Cursor cursor = db.query(DBinfo.Table.TABLE_NAME,null, null, null, null, null, null);

    if(null != cursor &&  cursor.getCount() >0)
    {
        UserInfo userInfo ;
        while(cursor.moveToNext())
        {

            userInfo = new UserInfo();

            int id =cursor.getInt(cursor.getColumnIndex("_id"));
            String uId = cursor.getString(cursor.getColumnIndex("userId"));
            String userName = cursor.getString(cursor.getColumnIndex("userName"));
            String token = cursor.getString(cursor.getColumnIndex("token"));
            String tokenSecret = cursor.getString(cursor.getColumnIndex("tokenSecret"));
            String isDefault = cursor.getString(cursor.getColumnIndex("isDefault"));
            byte[] byteIcon = cursor.getBlob(cursor.getColumnIndex("userIcon"));

            userInfo.set_id(id);
            userInfo.setUserId(uId);
            userInfo.setIsDefault(isDefault);
            userInfo.setToken(token);
            userInfo.setTokenSecret(tokenSecret);
            userInfo.setToken(token);
            userInfo.setUserName(userName);

            if(null !=byteIcon)
            {

                ByteArrayInputStream is = new ByteArrayInputStream(byteIcon);
                Drawable userIcon=Drawable.createFromStream(is, "image");

                userInfo.setUserIcon(userIcon);
            }

            users.add(userInfo);

        }

    }

    cursor.close();
    db.close();

    return users;

}
}

5. 最后一步,在Activity类中写入你要创建数据库和表的语句UserInfoServices来具体实现SQ操作

位置你的activity包
public class AccessActivity extends Activity {
    private JavascriptUtil javascriptUtil=new JavascriptUtil();
    private String data;
    private AutoUtil autoUtil=new AutoUtil();
    private UserInfoServices userInfoServices=new UserInfoServices();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        data=javascriptUtil.PIN;
        do{
            data=javascriptUtil.PIN;                 
            //不停地去读data的值,知道读到为止,因为view.loadUrl("javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
         //Intent是异步处理的,当处理第一个的时候,不等结果返回就会执行Intent,实现页面的跳转
        }while(data==null);
autoUtil.getAccessToken(data);
 userInfoServices=new UserInfoServices(getApplicationContext());//创建表,具体实现有UserInfoServices来实现

if(userInfoServices.getUserId(autoUtil.userId)==null) {//插入语信息具体实现由UserInfoServices
    userInfoServices.insertUserInfo(new UserInfo(autoUtil.userId, autoUtil.accessToken.getScreenName(), autoUtil.token, autoUtil.tokenSecret, "1"));
}else{//更新语信息具体实现由UserInfoServices
    userInfoServices.updateUserInfo(new UserInfo(autoUtil.userId, autoUtil.accessToken.getScreenName(), autoUtil.token, autoUtil.tokenSecret, "1"));
}
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}

6.另外关于SQ里有没有信息

userInfoServices=new UserInfoServices(getApplicationContext());
        list=userInfoServices.findAllUsers();
        if(list==null||list.isEmpty()){
            Intent intent=new Intent(getApplicationContext(),AuthActivity.class);
            startActivity(intent);
            finish();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值