本文主要是介绍使用OrmLite数据库实现本地的账号登录,注册功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OrmLite是基于SQLite的封装的。实现方法是通过对java bean类进行注解的方式,操作简单许多。
首先想在as中使用这个OrmLite类,需要下载两个jar包,至于jar包的用途,可以看看官方文档,这里我将jar包粘上去了,需要使用的可以进行下载。
ormlite架包,点击下载
操作步骤
1、将两个架包拷贝到libs包中,最简单的引用进as中就是点击:
即可。
#
2、新建一个DataBaseHelper类
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;import table.User;/*** Created by 80926 on 2016/9/25.*/
public class DataBaseHelper extends OrmLiteSqliteOpenHelper{private final static String DATABASE_NAME = "mydatabase.db";//数据库名称private final static int DATABASE_VERSION = 1;//数据库版本号private Map<String,Dao> maps = new HashMap<>();//使用单例模式进行其他的进行访问private static DataBaseHelper instance;public static synchronized DataBaseHelper getInstance(Context context){if (instance == null){synchronized (DataBaseHelper.class){if (instance == null){instance = new DataBaseHelper(context);}}}return instance;}public synchronized Dao getDao(Class clz) throws SQLException{Dao dao = null;String className = clz.getSimpleName();if (maps.containsKey(className)){dao = maps.get(className);}else {dao = super.getDao(clz);maps.put(className,dao);}return dao;}//关闭所有操作public void close(){super.close();for(String key : maps.keySet()){Dao dao = maps.get(key);dao = null;}}public DataBaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {//完成对数据库的创建和表的建立try {TableUtils.createTable(connectionSource, User.class);} catch (SQLException e) {e.printStackTrace();}}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {try {TableUtils.dropTable(connectionSource,User.class,true);} catch (SQLException e) {e.printStackTrace();}}
}
2、因为OrmLite数据库的建表示在bean类上的,所以新建一个UesrBean类
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;/*** Created by 80926 on 2016/9/25.*/
@DatabaseTable(tableName = "user_info")//数据库表名字
public class User {@DatabaseField(generatedId = true)//数据库的主键--primary keyprivate int id;@DatabaseField(columnName = "name")private String name;@DatabaseField(columnName = "password")//列名private String password;public User(){}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", desc='" + password + '\'' +'}';}public User(String name, String password) {this.name = name;this.password = password;}public User(int id, String name, String desc) {this.id = id;this.name = name;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
3、新建一个UserDao类,用于封装一些增删改查操作
import android.content.Context;import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.stmt.UpdateBuilder;
import com.j256.ormlite.stmt.Where;import java.sql.SQLException;
import java.util.List;import db.DataBaseHelper;
import table.User;/*** Created by 80926 on 2016/9/25.*/
public class UserDao {private Context context;private Dao<User,Integer> userDao;private DataBaseHelper helper;public UserDao(Context context){//获取userDaohelper = DataBaseHelper.getInstance(context);try {userDao = helper.getDao(User.class);} catch (SQLException e) {e.printStackTrace();}}public void createUser(User user){//创建user表try {userDao.create(user);} catch (SQLException e) {e.printStackTrace();}}public void updateUser(User user){try {userDao.update(user);} catch (SQLException e) {e.printStackTrace();}}/*** @param user* @param id*/public void updateUserById(User user,Integer id){//通过user的id进行更新try {userDao.updateId(user,id);} catch (SQLException e) {e.printStackTrace();}}public void updateUserByBuilder(User user,String name,String id,Integer selectedId){UpdateBuilder builder = userDao.updateBuilder();try {builder.updateColumnValue(name,user.getName()).where().eq(id,selectedId);//将某一条的id(或者其他列中的属性)的name改为新的namebuilder.update();} catch (SQLException e) {e.printStackTrace();}}public void deleteUser(User user) {//删除一整条数据try {userDao.delete(user);} catch (Exception e) {e.printStackTrace();}}public void deleteMuUser(List<User> users){//删除集合中的所有usertry {userDao.delete(users);} catch (SQLException e) {e.printStackTrace();}}public void deleteUserById(List<Integer> ids){//删除list集合中所有的id的条目try {userDao.deleteIds(ids);} catch (SQLException e) {e.printStackTrace();}}//获取所有数据public List<User> listAll(){try {return userDao.queryForAll();} catch (SQLException e) {e.printStackTrace();}return null;}//查询数据库public List<User> queryBuilder1(String name,String password){List<User> list = null;try {list = userDao.queryBuilder().where().eq("name",name).and().eq("password",password).query();} catch (SQLException e) {e.printStackTrace();}return list;}//查询,或的关系,两者选一即可public List<User> queryBuilder2(String name,String userName1,String userName2){List<User> list = null;QueryBuilder<User, Integer> queryBuilder = userDao.queryBuilder();Where<User, Integer> where = queryBuilder.where();try {list = where.and(where.in(name,userName1,userName2),where.eq(name,userName2)).query();}catch (SQLException e){e.printStackTrace();}return list;}
}
4、LoginActivity
public class LoginActivity extends Activity implements View.OnClickListener {private EditText etName;private EditText etPassword;private Button button;private UserDao userDao;private List<User> list;private TextView textViewWangji;private TextView textViewZhuce;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);etName = (EditText) findViewById(R.id.etName);etPassword = (EditText) findViewById(R.id.etPassword);button = (Button) findViewById(R.id.login);textViewWangji = (TextView) findViewById(R.id.text_wangji);textViewZhuce = (TextView) findViewById(R.id.text_zhuce);textViewWangji.setOnClickListener(this);textViewZhuce.setOnClickListener(this);button.setOnClickListener(this);userDao = new UserDao(this);list = userDao.listAll();}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.login:String name = etName.getText().toString();String password = etPassword.getText().toString();if (name.equalsIgnoreCase("")||password.equalsIgnoreCase("")){Toast.makeText(LoginActivity.this, "不能为空!", Toast.LENGTH_SHORT).show();}else {for(int i = 0 ; i < list.size();i++){User user = list.get(i);if (user.getName().equalsIgnoreCase(name)&&user.getPassword().equalsIgnoreCase(password)){startActivity(new Intent(LoginActivity.this,OrmLiteActivity.class));}else if(user.getName().equalsIgnoreCase(name)&&!user.getPassword().equalsIgnoreCase(password)){Toast.makeText(LoginActivity.this, "密码错误,请重新输入", Toast.LENGTH_SHORT).show();etPassword.setText("");}else if(!user.getName().equalsIgnoreCase(name)&&user.getPassword().equalsIgnoreCase(password)){Toast.makeText(LoginActivity.this, "账户错误,请重新输入", Toast.LENGTH_SHORT).show();etName.setText("");}}}break;case R.id.text_wangji:startActivity(new Intent(this,GenggaiActivity.class));break;case R.id.text_zhuce:startActivity(new Intent(this,ZhuceActivity.class));break;}}
}
5、注册界面
public class ZhuceActivity extends Activity implements View.OnClickListener {private EditText etName;private EditText etPW;private EditText etRPW;private Button button;private UserDao userDao;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_zhuce);etName = (EditText) findViewById(R.id.et_userName);etPW = (EditText) findViewById(R.id.et_userPassword);etRPW = (EditText) findViewById(R.id.et_userRePassword);button = (Button) findViewById(R.id.btn_zhuce);button.setOnClickListener(this);userDao = new UserDao(this);}@Overridepublic void onClick(View v) {String name = etName.getText().toString();String etPw = etPW.getText().toString();String etRpw = etRPW.getText().toString();if(name.equalsIgnoreCase("")||etPw.equalsIgnoreCase("")||etRpw.equalsIgnoreCase("")){Toast.makeText(ZhuceActivity.this, "用户密码和账户不能为空", Toast.LENGTH_SHORT).show();etName.setText("");etPW.setText("");etRPW.setText("");}else {if(!etPw.equalsIgnoreCase(etRpw)){Toast.makeText(ZhuceActivity.this, "两次密码不一致", Toast.LENGTH_SHORT).show();etPW.setText("");etRPW.setText("");}else {User user = new User();user.setName(name);user.setPassword(etPw);userDao.createUser(user);Toast.makeText(ZhuceActivity.this, "注册成功,请登录", Toast.LENGTH_SHORT).show();Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent);}}}
}
这篇关于使用OrmLite数据库实现本地的账号登录,注册功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!