嚮往常一樣,我們先來搞清一下我們需要梳理的知識點:
今天我們使用的數據存儲是使用第三方控件orlmlite
我們先來介紹一下ORMLite:
ORMLite是一個輕量級的Java對象關係映射持久層框架。支持包括 MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB和Sqlite等在內的數據庫。提供靈活的QueryBuilder來構建複雜的數據查詢。強大的抽象DAO類,只需5行代碼便能夠自動生成SQL來創建和刪除數據庫表格。
導入第三方控件的好處是直接調用方法,不再需要自己寫方法。
本次工程實現功能介紹
將輸入的數據加到數據庫中
點擊增加:可以將數據加入到數據庫中
點擊查詢:查詢全部信息
點擊刪除:你可以只輸入主鍵ID,選中進行刪除
點擊ID查詢:輸入ID查詢單條數據
具體實現步驟:
第一步:建立數據庫。可以直接拿去使用
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
//數據庫的名字
private static final String TABLE_NAME = "ormtest.db";
private Map<String, Dao> daos = new HashMap<String, Dao>();
private static DatabaseHelper instance;
private DatabaseHelper(Context context) {
super(context, TABLE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase database,
ConnectionSource connectionSource) {
try {
//建表、可以建多個表
TableUtils.createTable(connectionSource, User.class);
//TableUtils.createTable(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database,
ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
//User實體類
TableUtils.dropTable(connectionSource, User.class, true);
onCreate(database, connectionSource);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 單例獲取該Helper
*
* @param context
* @return
*/
public static synchronized DatabaseHelper getHelper(Context context) {
context = context.getApplicationContext();
if (instance == null) {
synchronized (DatabaseHelper.class) {
if (instance == null) {
instance = new DatabaseHelper(context);
}
}
}
return instance;
}
public synchronized Dao getDao(Class clazz) throws SQLException {
Dao dao = null;
String className = clazz.getSimpleName();
if (daos.containsKey(className)) {
dao = daos.get(className);
}
if (dao == null) {
dao = super.getDao(clazz);
daos.put(className, dao);
}
return dao;
}
/**
* 釋放資源
*/
@Override
public void close() {
super.close();
for (String key : daos.keySet()) {
Dao dao = daos.get(key);
dao = null;
}
}
}
第二步:建立數據庫中的數據表
運用註解的方式,在實體類中創建表格
//不寫tableName = "user",默認找名字都叫User
//表名
@DatabaseTable(tableName = "user")
public class User {
@DatabaseField(id = true)//true爲主鍵
private String userId;
//@DatabaseField代表是列
//列名columnName = "username"寫數據庫裏就叫這個名 不寫默認屬性名叫name
@DatabaseField(columnName = "username")
private String name;
@DatabaseField()
private String age;
public User(){
}
public User(String userId, String name, String age) {
this.userId = userId;
this.name = name;
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
第三步:書寫方法
public class UserDaoOrm {
private Context context;
//調用它自帶的Dao
private Dao<User,Integer> userDao;
private DatabaseHelper helper;
public UserDaoOrm(Context context){
this.context = context;
helper=DatabaseHelper.getHelper(context);
try {
userDao=helper.getDao(User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
//添加一條數據
public void add(User user){
try {
userDao.createOrUpdate(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
//查詢全部
public List<User> select(){
try {
return userDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//刪除
public void delete(User user){
try {
userDao.delete(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
//查詢一個
public User selectUser(String id){
try {
return userDao.queryBuilder()
.where()
.eq("userId",id)
.queryForFirst();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
第四步:建立一個Activity然後,通過調用,實現具體功能
public class UserOrlActivity extends AppCompatActivity {
private EditText name,age,id;
private Button insert,select,delete,update;
private TextView show;
private UserDaoOrm userDaoOrm;
private Spinner sp;
private List<User>list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_orl);
name= (EditText) findViewById(R.id.name);
age= (EditText) findViewById(R.id.age);
id= (EditText) findViewById(R.id.pwd);
insert= (Button) findViewById(R.id.add);
select= (Button) findViewById(R.id.search);
delete= (Button) findViewById(R.id.delete);
show= (TextView) findViewById(R.id.show);
sp= (Spinner) findViewById(R.id.sp);
update= (Button) findViewById(R.id.update);
userDaoOrm=new UserDaoOrm(this);
//新增方法
insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
User user=new User();
user.setUserId(id.getText().toString());
user.setName(name.getText().toString());
user.setAge(age.getText().toString());
userDaoOrm.add(user);
Toast.makeText(getBaseContext(), "新增成功", Toast.LENGTH_SHORT).show();
}
});
select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list = userDaoOrm.select();
show.setText(list.toString());
List mydate = new ArrayList();
for (User u : list) {
mydate.add(u.getUserId() + ":" + u.getName() + ":" + u.getAge());
ArrayAdapter aa = new ArrayAdapter(getBaseContext(), android.R.layout.simple_list_item_1, mydate);
sp.setAdapter(aa);
}
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long idd) {
String str = sp.getSelectedItem().toString();
if (!str.equals("")) {
String userid = str.split(":")[0];
User user = userDaoOrm.selectUser(userid);
name.setText(user.getName().toString());
id.setText(user.getUserId().toString());
age.setText(user.getAge().toString());
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} });
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!id.getText().toString().equals("")){
User u=new User();
u.setUserId(id.getText().toString());
userDaoOrm.delete(u);
Toast.makeText(getBaseContext(), "刪除成功", Toast.LENGTH_SHORT).show();
}
}
});
//查詢一個
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String uid=id.getText().toString();
User u=userDaoOrm.selectUser(uid);
String a=u.getUserId()+":"+u.getName()+":"+u.getAge();
show.setText(a);
}
});
}
}
編程結束:下面爲效果圖