9.将数据存储到数据库中处理显示分离SQLite数据库操作,以及也买跳转的注意点

在安卓中,数据库操作创建调用的方法多样,下面我就提供一种最为合理的操作方法

一、首先创建DB文件夹,创建DBHelper文件

package DB;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**BDHelper是创建数据库的模板
 * Created by Administrator on 2016/8/13.
 */
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) {

    }
}

二、在DB文件夹中创建DBInfo,s数据库的帮助类,主要来存储创建数据库,以及其中表的数据

package DB;

/**创建数据库帮助类,及录入创建爱表时候必要的数据
 * Created by Administrator on 2016/8/13.
 */
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;
    }
}

三、创建Bean文件夹,创建UserInfo类,主要是一个JAVABEAN,是用来统一存储数据的

package Bean;

import android.graphics.drawable.Drawable;

/**用于传入数据
 * Created by Administrator on 2016/8/13.
 */
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;
    }
}

四、创建Service包,在里面创建UserInfoServices类,用于写数据库中对表的增删改查等统一操作

/**对user表进行创建正删改查等操作
 * Created by Administrator on 2016/8/13.
 */
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();
    }

    /**
     * 创建数据库,表
     * @param context
     */
//    public void createTable(Context context){
//        dbHelper=new DBHelper(context, DBinfo.DB.DB_NAME,null,DBinfo.DB.VERSION);
//        dbHelper.getWritableDatabase();
//    }

    /**
     * 添加用户信息
     * @param userInfo
     */
    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();
    }

    /**
     * 更新用户信息
     * @param userInfo
     */
    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
     * @return
     */
    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;
        }

    }

    /**
     * 获取数据库中所有的数据,放在集合中
     * @return
     */
    public List<UserInfo> findAllUsers()   ????????private Handler handler只是声明变量,如果有空指针一定要实例化,这里可以放在构造函数中进行
{
    SQLiteDatabase db =dbHelper.getReadableDatabase();
    Log.d("1231321","++++++");

    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;

}
}


五、最后一步,在Activity类中写入你要创建数据库和表的语句

package app.coolweather.com.weibo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import Bean.UserInfo;
import Services.UserInfoServices;
import Util.AutoUtil;
import Util.JavascriptUtil;


/**
 * Created by Administrator on 2016/8/12.
 */
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);
Log.d("DATA的值位:",data);
autoUtil.getAccessToken(data);
 userInfoServices=new UserInfoServices(getApplicationContext());//创建表
if(userInfoServices.getUserId(autoUtil.userId)==null) {
    userInfoServices.insertUserInfo(new UserInfo(autoUtil.userId, autoUtil.accessToken.getScreenName(), autoUtil.token, autoUtil.tokenSecret, "1"));
}else{
    Log.d("数据库:","有数据Id");
    userInfoServices.updateUserInfo(new UserInfo(autoUtil.userId, autoUtil.accessToken.getScreenName(), autoUtil.token, autoUtil.tokenSecret, "1"));
}
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}

第六步、在登录页面中判断数据库中是否有数据

package app.coolweather.com.weibo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;

import java.util.List;

import Bean.UserInfo;
import Services.UserInfoServices;

/**
 * Created by Administrator on 2016/8/3.
 */
public class LoginActivity extends Activity {
    private UserInfoServices userInfoServices;
    private List<UserInfo> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
//
//        Intent intent=new Intent(getApplicationContext(),AuthActivity.class);
//        startActivity(intent);
            init();

    }
    public void init(){
        userInfoServices=new UserInfoServices(getApplicationContext());
        list=userInfoServices.findAllUsers();
        if(list==null||list.isEmpty()){
            Intent intent=new Intent(getApplicationContext(),AuthActivity.class);
            startActivity(intent);
            finish();
        }else{
           Log.d("点击下拉框","111111111111111");
        }


    }
}
第七点、重点:当一个页面中存在存在webview的loadView验证处理和页面跳转时,需要运用thread来实现睡眠

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值