1,关于sqlite
是一个嵌入式数据库,非常的小。适合移动开发。
http://www.sqlite.org/download.html
下载地址:
支持mac,windows,linux系统。直接安装就行了。
同时还有源代码,可以学习下。
文档:
http://www.sqlite.org/docs.html
android下面的已经有支持了。
https://developer.android.com/training/basics/data-storage/databases.html?hl=zh-cn
支持阅读官网文档就可以了。
2,使用SQLiteOpenHelper 完成crud
首先要写一个pojo对象
public class UserInfo {
private Integer id;
private String name;
private Integer age;
private Integer sex;
private String city;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "UserInfo{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
", city='" + city + '\'' +
'}';
}
}
对user表进行crud操作:
package com.demo.sqlitetest;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.nfc.Tag;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class UserHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "UserInfo.db";
public static final String TABLE_NAME = "user_info";
//创建数据库。
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (id INTEGER PRIMARY KEY,name TEXT,age INTEGER,sex INTEGER,city TEXT)";
//删除数据库。
private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
public UserHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
@Override
public void close() {
super.close();
Log.v("SQLite", "##################cloes db.##################");
}
public void save() {
Random random = new Random();
ContentValues contentValues = new ContentValues();
contentValues.put("name", "zhangsan_" + random.nextInt());
contentValues.put("age", random.nextInt());
contentValues.put("sex", random.nextInt());
contentValues.put("city", "city_" + random.nextInt());
getWritableDatabase().insert(UserHelper.TABLE_NAME, "", contentValues);
}
public List<UserInfo> queryAll() {
List<UserInfo> list = new ArrayList<UserInfo>();
Cursor cursor = getReadableDatabase().rawQuery("select * from " + UserHelper.TABLE_NAME + " limit 5", null);
while (cursor.moveToNext()) {
UserInfo userInfo = new UserInfo();
userInfo.setId(cursor.getInt(cursor.getColumnIndex("id")));
userInfo.setName(cursor.getString(cursor.getColumnIndex("name")));
userInfo.setAge(cursor.getInt(cursor.getColumnIndex("age")));
userInfo.setSex(cursor.getInt(cursor.getColumnIndex("sex")));
userInfo.setCity(cursor.getString(cursor.getColumnIndex("city")));
//增加到数据中。
list.add(userInfo);
}
if (cursor != null) {
cursor.close();
}
return list;
}
public void delete() {
List<UserInfo> list = queryAll();
//只删除第一个。
if (list != null && list.size() > 0) {
UserInfo userInfo = list.get(0);
String[] whereArgs = {userInfo.getId() + ""};
getWritableDatabase().delete(UserHelper.TABLE_NAME, "id = ? ", whereArgs);
}
}
public void update() {
List<UserInfo> list = queryAll();
//只更新第一个。
if (list != null && list.size() > 0) {
Random random = new Random();
UserInfo userInfo = list.get(0);
ContentValues values = new ContentValues();
values.put("name", "lisi_" + random.nextInt());
String[] args = {String.valueOf(userInfo.getId())};
//更新数据。
getWritableDatabase().update(UserHelper.TABLE_NAME, values, "id = ? ", args);
}
}
}
mainActivity代码:
package com.demo.sqlitetest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.util.List;
public class DatabaseMainActivity extends AppCompatActivity {
private static final String TAG = "dataBaseTest:";
UserHelper helper = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database_main);
//c创建对象。
helper = new UserHelper(getBaseContext());
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//保存。
for (int i = 0; i < 10; i++) {
helper.save();
}
//查询。
List<UserInfo> list = helper.queryAll();
for (UserInfo userInfo : list) {
Log.v(TAG, userInfo.toString());
}
//更新
helper.update();
//删除
helper.delete();
}
});
}
//在每次注销的时候关闭。
@Override
protected void onDestroy() {
super.onDestroy();
if (helper != null) {
helper.close();
}
Log.v(TAG, "############# close db ############");
}
}
4,总结
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53319494
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
作为对比,发现在android下面使用sqlite和mysql差不多。
但是使用sqliteHelper之后会方便很多。创建表和查询其实其实差不多。
就是调用函数和普通的jdbc不太一样。适应下就行了。
官方给的sqlite就已经不错了,不需要再使用orm了。自己做个对象转换就行了。
没有必要封装,比较作为android的客户端,大小也是很重要的。