編輯:關於Android編程
一:基本操作
1繼承SQLiteOpenHelper
public class UserSqliteOpenHelper extends SQLiteOpenHelper {
private static final int versionNo = 1;
public UserSqliteOpenHelper(Context context) {
super(context, "user.db", null, versionNo);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log. i("" , "sqlite onCreate" );
db.execSQL( "create table user (id Integer primary key autoincrement, name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log. i("" , "sqlite onUpgrade" );
db.execSQL( "insert into user(name) values(?)", new Object[]{"version"+versionNo });
}
}
從代碼中我們可以看出,UserSqliteOpenHelper重寫了SQLiteOpenHelper的onCreate和onUpgrade兩個方法 說明: onCreate:數據庫被建立的時候調用,一般執行創建數據庫語句 onUpgrade:當版本號(versionNo)增加時執行此方法,一般用於對表結構的更改、添加或刪除 *第一次創建數據庫時執行onCreate,不執行onUpgrade;更改版本號之後,執行onUpgrade,不執行onCreate 操作說明: 當 privatestaticfinalintversionNo= 1 時結果如下
當 privatestaticfinalintversionNo= 2 時結果如下
2.創建dao文件對sqlite數據庫進行操作
public class UserDao {
private UserSqliteOpenHelper tsoh;
public UserDao(Context context) {
tsoh = new UserSqliteOpenHelper(context);
}
public void insert(String name){
SQLiteDatabase db = tsoh.getWritableDatabase();
db. execSQL("insert into user(name) values(?)", new Object[]{name});
db.close();
}
public boolean find(String name){
SQLiteDatabase db = tsoh.getReadableDatabase();
Cursor cursor = db.rawQuery( "select * from user where name = ?", new String[]{name});
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
}
public void update(String name, String newName){
SQLiteDatabase db = tsoh.getWritableDatabase();
db. execSQL("update user set name = ? where name = ?", new Object[]{newName, name});
db.close();
}
public void delete(String name){
SQLiteDatabase db = tsoh.getWritableDatabase();
db. execSQL("delete from user where name = ?", new Object[]{name});
db.close();
}
public List findAll(){
List users = new ArrayList();
SQLiteDatabase db = tsoh.getReadableDatabase();
Cursor cursor = db.rawQuery( "select * from user", null);
while(cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex("id" ));
String name = cursor.getString(cursor.getColumnIndex("name" ));
User user = new User(id, name);
users.add(user);
}
cursor.close();
db.close();
return users;
}
}
user類的定義
public class User {
private int id;
private String name;
public User() {
super();
}
public User(int id, String name) {
super();
this. id = id;
this. name = name;
}
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;
}
@Override
public String toString() {
return "info:"+ id+ ","+ name;
}
}
代碼很簡單,不做過多解釋。需要注意的是,每次在操作數據庫的時候記得將cursor和database關閉,釋放資源。項目級的代碼應該使用try catch finally來操作,這裡為了演示簡單操作。這裡還是沿用了拼接字符串的方式執行sql語句,其實android還為我們提供封裝好了的API(最終還是將參數拼接成字符串,不過對於調用者來說新的API簡單明了,用戶不用考慮單引號雙引號的麻煩了),這裡不做過多介紹。 3.調用代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
UserDao testDao = new UserDao( this);
testDao.insert( "name1");
testDao.insert( "name2");
testDao.insert( "name3");
testDao.update( "name1", "name4");
boolean result = testDao.find("name2" );
testDao.delete( "name3");
List users = testDao.findAll();
for(User user:users){
Log. i("MainActivity" , user.toString());
}
}
基本操作介紹完畢。 二:推薦sqlite界面工具:sqlite expert professional 前兩天有個同事問我,sqlite中Integer能存儲最大的數值是多少,當時我也不知道,於是就當場測試了一下,測試的結果:-9223372036854775808 ~ 9223372036854775807 也就是-2^63到2^63-1 這就是我通過 sqlite工具實驗的結果
INTEGER: 用來存儲一個整數,根據大小可以使用1,2,3,4,6,8個字節來存儲(網絡抄錄,從我實驗的結果上來看上限是8個字節的整數)
android6.0 Activity(三) Activity與WMS通信過程
Activity在窗口和ViewRootImpl創建後會請求WMS創建一個連接,請求WMS為其創建一個WindowState對象用來描述窗口狀態。Activity與WMS
android 多線程技術應用
多線程案例——計時器 這個案例中,屏幕啟動之後,進入如圖所示的界面。 屏幕上有一個文本框用於顯示逝去的時間,此外還有一個“停止計時”按鈕。案例的用例圖如圖所示。 &nbs
Android筆記之:onConfigurationChanged詳解
從事Android開發,免不了會在應用裡嵌入一些廣告SDK,在嵌入了眾多SDK後,發現幾乎每個要求在AndroidManifest.xml申明Activity的廣告SDK
Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實例
零、概覽1.ViewPager說白了就是個控件,在使用時包名要帶全是Android.support.v4.view.ViewPager。由於我的ADT-Bundle版本比