編輯:關於android開發
1.SQLite數據庫:
SQLite 是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。 其特點是高度便攜、使
用方便、結構緊湊、高效、可靠。 與其他數據庫管理系統不同,SQLite 的安裝和運行非常簡單,在大多數情況下 - 只要確保
SQLite的二進制文件存在即可開始創建、連接和使用數據庫。
對於SDK來講,已經內置了SQLite的程序,因此我們不需要在SQLite官網上下載。一般數據庫采用的都是靜態的數據類
型,而我們的SQLite數據庫采用的是動態數據庫,會根據存入值自動判斷。SQLite 數據庫相對於其他數據庫最大的特點是我們
可以把各種類型的數據保存到任何字段中,而不用關心字段聲明的類型是什麼。有一種特殊的情況是,定義為INTEGER PRIMARY
KEY 的字段只能存儲64位整數。SQLite具有以下五種類型:
1.NULL:空值;
2.INTEGER:帶符號的整形,具體取決於存入數字的范圍大小;
3.REAL:浮點數字;
4.TEXT:字符串文本;
5.BLOB:二進制對象;
2.相關操作
①創建數據庫:sqlite3 test.db;
②創建表:create table userInfo(userId integer primary key autoincrement,name varchar(20));
SQLite數據庫可以解析大部分標准SQL語句:
①查詢語句:select * from 表名 where 條件子句 group by 分組子句 having...order by 排序子句
例如:select * from userInfo order by id desc;
select * from userInfo group by name having count(*)>1
②插入語句:insert into 表名(字段列表) values(值列表)
例如:insert into userInfo(name,age) values('張三',20)
③更新語句:update 表名 set 字段名=值 where 條件子句
例如:update person set name = '張三' where id = 10
④刪除語句:delete from 表名 where 條件子句
例如:delete from userInfo where id = 10
實例代碼:
1.創建一個JavaBean
public class Student {
private int sid;
private String name;
private short age;
public Student() {
super();
}
public Student(int sid, String name, short age) {
super();
this.sid = sid;
this.name = name;
this.age = age;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public short getAge() {
return age;
}
public void setAge(short age) {
this.age = age;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", name=" + name + ", age=" + age + "]";
}
}
2.創建一個用於創建SQLite數據庫的類DBOpenHelper .java
public class DBOpenHelper extends SQLiteOpenHelper{
private static final String DBNAME="data.db";
private static CursorFactory factory=null;
private static final int VERSION=1;
public DBOpenHelper(Context context) {
super(context, DBNAME, factory, VERSION);
}
//當數據庫第一次被創建的時候,執行該方法
@Override
public void onCreate(SQLiteDatabase db) {
//sql語句中的字段名與Student.java的成員變量對應
String sql="create table t_student (sid integer primary key,"
+ "name varchar(20),age integer)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
3.創建一個操作數據庫的類StudentDAO .java
public class StudentDAO {
private DBOpenHelper helper;
private SQLiteDatabase db;
public StudentDAO(Context context) {
// 創建DBOpenHelper的實例
helper = new DBOpenHelper(context);
}
public void add(Student student) {
/**
* Android使用getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的SQLiteDatabase實例。
* (getReadableDatabase()方法中會調用getWritableDatabase()方法)
* 1.getWritableDatabase() 方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫.
* 2.getReadableDatabase()方法則是先以讀寫方式打開數據庫,如果數據庫的磁盤空間滿了,就會打開失敗,當打
* 開失敗後會繼續嘗試以只讀方式打開數據庫。如果該問題成功解決,則只讀數據庫對象就會關閉,然後返回一個可讀寫的數據庫對象。
*/
db = helper.getWritableDatabase();
String sql = "insert into t_student (sid,name,age) values (?,?,?)";
db.execSQL(sql, new Object[] { student.getSid(), student.getName(),
student.getAge() });
}
public void update(Student student) {
db = helper.getWritableDatabase();
String sql = "update t_student set name = ?,age = ? where sid = ?";
db.execSQL(sql, new Object[] { student.getName(), student.getAge(),
student.getSid() });
}
public Student query(int sid) {
db = helper.getWritableDatabase();
String sql = "select sid,name,age from t_student where sid=?";
// Cursor實際上就是一種存儲數據的集合
Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(sid) });
// 在cursor查找到的結果集合中將光標移動到到下一行,也就是將光標指向查找到的下一個結果
if (cursor.moveToNext()) {
// 通過getColumnIndex()方法可以得到指定列的名稱,如果不存在返回-1
return new Student(cursor.getInt(cursor.getColumnIndex("sid")),
cursor.getString(cursor.getColumnIndex("name")),
cursor.getShort(cursor.getColumnIndex("age")));
}
return null;
}
// 這裡使用可變參數,來滿足參數個數不固定的情況
public void delete(Integer... sids) {
if (sids.length > 0) {
// StringBuffer線程安全的,多用於多線程中,用來對字符串進行復雜的操作
StringBuffer sb = new StringBuffer();
for (int i = 0; i < sids.length; i++) {
sb.append('?').append(',');
}
sb.deleteCharAt(sb.length() - 1);
SQLiteDatabase database = helper.getWritableDatabase();
String sql = "delete from t_student where sid in (" + sb + ")";
database.execSQL(sql, (Object[]) sids);
}
}
public List<Student> getScrollData(int start, int count) {
List<Student> students = new ArrayList<Student>();
db = helper.getWritableDatabase();
String sql = "select * from t_student limit ?,?";
Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(start),
String.valueOf(count) });
while (cursor.moveToNext()) {
students.add(new Student(
cursor.getInt(cursor.getColumnIndex("sid")),
cursor.getString(cursor.getColumnIndex("name")),
cursor.getShort(cursor.getColumnIndex("age"))));
}
return students;
}
public long getCount(){
db=helper.getWritableDatabase();
String sql="select count(sid) from t_student";
Cursor cursor=db.rawQuery(sql,null);
if(cursor.moveToNext()){
return cursor.getLong(0);
}
return 0;
}
}
Android項目開發實戰-2048游戲,android-2048 《2048》是一款比較流行的數字游戲,最早於2014年3月20日發行。原版2048首先在GitHub上
Android ViewPager使用詳解 這是谷歌官方給我們提供的一個兼容低版本安卓設備的軟件包,裡面包囊了只有在安卓3.0以上可以使用的api。而viewpage
Android 在內部存儲讀寫文件,android讀寫文件讀寫操作* Ram內存:運行內存,相當於電腦的內存* Rom內存:內部存儲空間,相當於電腦的硬盤* sd卡:外部
Android 手機衛士--導航界面2,android衛士本文地址:http://www.cnblogs.com/wuyudong/p/5947504.html,轉載請注
基於CoordinatorLayout實現向上滾動導航條ToolBar滾