編輯:關於Android編程
本文主要記錄一下Android SQLiteDatabase中如何判斷數據庫中表是否存在,以及測試SQLiteDatabase數據庫的基本操作。有關SQLite的詳細說明,可以查看轉載的Android 數據存儲——SQLite使用詳解
例子:
AndroidManifest.xml——沒有做任何修改,創建工程默認
MainActivity.java
package com.example.sqlite;
import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MainActivity extends Activity {
private SQLiteDatabase db1;
// private SQLiteDatabase db2;
private MyDatabaseUtil myDatabaseUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//參數二是數據庫文件名
myDatabaseUtil = new MyDatabaseUtil(this, db1.db, null, 1);
db1 = this.openOrCreateDatabase(db1.db, Context.MODE_PRIVATE, null);
/*/data/data/com.example.sqlite/databases必須存在,否則創建出錯,最後是databases而不是database,不要忘了加's'*/
// db2 = SQLiteDatabase.openOrCreateDatabase(/data/data/com.example.sqlite/databases/db2.db3,null);
/*創建表,並判斷是否已經存在此表,沒創建,則創建並初始化*/
if (!myDatabaseUtil.tabIsExist(person)) {
db1.execSQL(CREATE TABLE person (_id integer primary key autoincrement, name varchar(20)));
ContentValues values =new ContentValues();
for(int i=0;i<10;i++){
values.put(name, name + i);
db1.insert(person, _id, values);
}
}else {
Log.i(+++++++++++, 已經創建了,無需再創建);
}
/*更新數據庫*/
ContentValues values =new ContentValues();
values.put(name, wxl);
db1.update(person, values, _id=1, null);
db1.update(person, values, _id=?, new String[]{5});
/*查詢數據*/
Cursor c = db1.query(person, null, null, null, null, null, null);
c.moveToFirst();
while(!c.isAfterLast()){
int index = c.getColumnIndex(name);
Log.d(SQLite, c.getString(index));
c.moveToNext();
}
c = db1.rawQuery(select * from person, null);
c.moveToFirst();
while(!c.isAfterLast()){
int index = c.getColumnIndex(name);
Log.d(SQLite, c.getString(index));
c.moveToNext();
}
}
public class MyDatabaseUtil extends SQLiteOpenHelper{
public MyDatabaseUtil(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* 判斷某張表是否存在
* @param tabName 表名
* @return
*/
public boolean tabIsExist(String tabName){
boolean result = false;
if(tabName == null){
return false;
}
SQLiteDatabase db = null;
Cursor cursor = null;
try {
db = this.getReadableDatabase();//此this是繼承SQLiteOpenHelper類得到的
String sql = select count(*) as c from sqlite_master where type ='table' and name ='+tabName.trim()+' ;
cursor = db.rawQuery(sql, null);
if(cursor.moveToNext()){
int count = cursor.getInt(0);
if(count>0){
result = true;
}
}
} catch (Exception e) {
// TODO: handle exception
}
return result;
}
}
}
其中getReadableDatabase()方法是SQLiteOpenHelper類中的
創建表並初始化得到的表數據如下:

更新數據得到的表數據:

查詢數據表的數據顯示結果如下:

android學習四(Activity的生命周期)
要學好活動(Activity),就必須要了解android中Activity的聲明周期,靈活的使用生命周期,可以開發出更好的程序,在android中是使用任務來管理活動的
從零開始學android(數據存儲(1)SharedPreferences屬性文件.三十五.)
在android中有五種保存數據的方法,分別是: Shared Preferences Store private primitive data in key-val
Android開發 ----------如何真機調試?
一般來說 真機調試 是最快的, 所以建議 大家 直接用真機調試。
Android反編譯看看手Q口令紅包的實現原理
首篇作為開始,先講講簡單的反編譯。反編譯通常有幾種目的:互相學習、借來用用、嘿嘿(干你,又分為小干干類似微信紅包,和大干干改別人的apk幫他上架)。因為沒帶kvm回來,m