学习笔记 新浪微博篇 六 Android SQLite 部署篇
2016-09-27 11:12
447 查看
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(); }
相关文章推荐
- 学习笔记 新浪微博篇 三 Android SQLiteOpenHelper 类详解
- Android应用开发学习笔记(1)开发环境部署
- Android开发学习笔记-8 SQLite使用
- Android开发学习笔记:数据存取之SQLite浅析
- Android(OPhone) 学习笔记 - SQLite
- Android开发学习笔记:数据存取之SQLite浅析
- SQLite 使用方法 -- MarsChen Android 开发教程学习笔记
- Android开发学习笔记:数据存取之SQLite浅析
- android 数据库 SQLiteOpenHelper和ContentProvider学习笔记---添加修改删除数据之联系人(二)
- Android开发学习笔记:数据存取之SQLite浅析
- Android(java)学习笔记141:SQLiteDatabase的query方法参数分析
- 【Android】学习笔记(9)——SQLite简单使用
- Android:SQLiteOpenHelper 学习笔记
- Android 学习笔记之 SQLite基础用法
- Android开发学习笔记:数据存取之SQLite浅析
- Android SQLite数据库学习笔记
- Android 学习 笔记_03. SQLite的使用
- Android 学习 笔记_03. SQLite的使用
- android开发学习笔记——sqlite操作
- Android开发学习笔记:数据存取之SQLite浅析