編輯:關於Android編程
android 系統集成了一個輕量級的數據庫,SQLite只是一個嵌入式的數據庫引擎;android提供SQLiteDatabase代表一個數據庫,一旦應用程序獲得了SQLiteDatabase對象,接下來就可以通過SQLiteDatabase對象來操作管理數據了,下面分別就創建數據庫以及增刪改查給出例子;
數據庫創建的位置如下
vcGsvdOho8q1z9bByzK49re9t6g6b25DcmVhdGW6zW9uVXBncmFkZaGjtdrSu7TOu/G1w7bUyv2+3b/itcS2wbvy0LSy2df3tcTKsbrytffTw29uQ3JlYXRlLMv50tTV4sDvw+bQtLS0vajK/b7dse21xNPvvuQ71NrK/b7dv+Kw5rG+seS7r7XEyrG68rvhtffTw29uVXBncmFkZSzL+dLUyOe5+7HtveG5ubHku6/By77N1NrV4sDv0N64xKGjILT6wuu94bm5yOfNvMG9uPZKYXZhzsS8/iAhW9XiwO/QtM28xqzD6Mr2XShodHRwOi8vaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNTA5MDgxODUxNDI4MDApICZndDtUZXN0U1FMaXRlT3BlbkhlbHBlcjwvcD4NCjxwcmUgY2xhc3M9"brush:java;">
public class TestSQLiteOpenHelper extends SQLiteOpenHelper{
public TestSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public TestSQLiteOpenHelper(Context context, String name) {
this(context, name, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(create table if not exists user(id Integer primary key autoincrement,name varchar(20),password varchar(20)));
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
創建數據庫
getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的SQLiteDatabase實例。 但getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫, getWritableDatabase()打開數據庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫, 倘若使用如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫.
//四個參數,第一個上下文,2表的名字,34都已經在構造函數中固定了,為 null和1
TestSQLiteOpenHelper Helper=new TestSQLiteOpenHelper(getApplicationContext(),MY_FIRST_DB.db);
SQLiteDatabase database=Helper.getWritableDatabase();//獲取一個用於操作數據庫的SQLiteDatabase實例
增加數據
/**
* 增加數據
*/
private void insertDatabase() {
ContentValues values=new ContentValues();
values.put(name,username.getText().toString());
values.put(password,password.getText().toString());
//兩種方式插入數據庫
// database.execSQL();
database.insert(user,null,values);
}
刪除數據
/**
* 刪除數據
*/
private void deleteDatabase() {
database.delete(user,name=?,new String[]{zhangsan});
}
更改數據
/**
* 更改數據
*/
private void updataDatabase() {
ContentValues values1=new ContentValues();
values1.put(password,abcd);
database.update(user,values1,name=?,new String[]{zhangsan});
}
查詢數據
/**
* 查詢數據
*/
private void select() {
//兩種數據庫查詢方式
//根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,後面為數量。前面為忽略數
Cursor cursor=database.query(user,null,null,null,null,null,id DESC,2,1);
//根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,
// Cursor cursor=database.rawQuery(select * from user ORDER BY id DESC LIMIT 2 OFFSET 2,null);
cursor.moveToFirst();
while (!cursor.isAfterLast()){
//getString 需要傳入ColumnIndex類型的參數,
// 也就是第幾個記錄,可以先查詢name的ColumnIndex數值傳入
String name=cursor.getString(cursor.getColumnIndex(name));
String password=cursor.getString(cursor.getColumnIndex(password));
Log.d(curser, 用戶名 + name + 密碼 + password);
cursor.moveToNext();
}
}
界面很簡單如下
下面給出主程序源碼
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button_creatdb;
private Button button_insert;
private Button button_delete;
private Button button_update;
private Button button_select;
private SQLiteDatabase database;
private EditText username;
private EditText password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username= (EditText) findViewById(R.id.edittext_username);
password= (EditText) findViewById(R.id.edittext_password);
button_creatdb= (Button) findViewById(R.id.button1);
button_insert= (Button) findViewById(R.id.button2);
button_delete = (Button) findViewById(R.id.button3);
button_update= (Button) findViewById(R.id.button4);
button_select= (Button) findViewById(R.id.button5);
button_select.setOnClickListener(this);
button_update.setOnClickListener(this);
button_delete.setOnClickListener(this);
button_creatdb.setOnClickListener(this);
button_insert.setOnClickListener(this);
//四個參數,第一個上下文,2表的名字,34都已經在構造函數中固定了,為 null和1
TestSQLiteOpenHelper Helper=new TestSQLiteOpenHelper(getApplicationContext(),MY_FIRST_DB.db);
// getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的SQLiteDatabase實例。
// 但getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,
// getWritableDatabase()打開數據庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫,
// 倘若使用如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫.
database=Helper.getWritableDatabase();//獲取一個用於操作數據庫的SQLiteDatabase實例
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button1:
Toast.makeText(getApplicationContext(),已創建數據庫,Toast.LENGTH_LONG).show();
break;
case R.id.button2:
insertDatabase();
break;
case R.id.button3:
deleteDatabase();
break;
case R.id.button4:
updataDatabase();
break;
case R.id.button5:
select();
break;
default:
break;
}
}
/**
* 查詢數據
*/
private void select() {
//兩種數據庫查詢方式
//根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,後面為數量。前面為忽略數
Cursor cursor=database.query(user,null,null,null,null,null,id DESC,2,1);
//根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,
// Cursor cursor=database.rawQuery(select * from user ORDER BY id DESC LIMIT 2 OFFSET 2,null);
cursor.moveToFirst();
while (!cursor.isAfterLast()){
//getString 需要傳入ColumnIndex類型的參數,
// 也就是第幾個記錄,可以先查詢name的ColumnIndex數值傳入
String name=cursor.getString(cursor.getColumnIndex(name));
String password=cursor.getString(cursor.getColumnIndex(password));
Log.d(curser, 用戶名 + name + 密碼 + password);
cursor.moveToNext();
}
}
/**
* 刪除數據
*/
private void deleteDatabase() {
database.delete(user,name=?,new String[]{zhangsan});
}
/**
* 更改數據
*/
private void updataDatabase() {
ContentValues values1=new ContentValues();
values1.put(password,abcd);
database.update(user,values1,name=?,new String[]{zhangsan});
}
/**
* 增加數據
*/
private void insertDatabase() {
ContentValues values=new ContentValues();
values.put(name,username.getText().toString());
values.put(password,password.getText().toString());
//兩種方式插入數據庫
// database.execSQL();
database.insert(user,null,values);
}
}
前不久由於項目的需要,要做一個自定義的軟鍵盤,我也上網看了很多,都覺得很繁瑣,所以想自己動手實現個。以備不時之需把。我選擇了參考百度錢包的軟鍵盤,看起來還不錯:publi
最近我為了准備下一個系列的博客,也是花了很長的時間研讀源碼。很遺憾的是,下一個系列的博客我可能還要再過一段時間才能寫出來,那麼為了不至於讓大家等太久,今天就給大家更新一篇
開發了android程序就知道,原生的模擬器啟動比較慢,還會出現莫名的問題,這邊介紹另外一種模擬器: BlueStacks:BlueStacks是一個可以讓Android
在android中,文本控件主要包括TextView控件和EditView控件,本節先對TextView控件的用法進行詳細介紹。 &n