編輯:關於Android編程
SQLite數據庫以其輕量、體積小等特點,使其在開發中運用的非常廣泛,在前面的博客中我也介紹過在Cocos2d-x中使用SQLite數據庫,這篇博客是介紹在Android中使用SQLite數據庫,Android中直接集成了SQLite數據庫,使用起來非常方便,不需要向Cocos2d-x中那樣添加外部文件
我將使用SQLite數據庫實現一個下圖所示的效果,打開app後會彈出下圖所示的界面

單擊createDatabase按鈕後,在logcat中可以看到打印了一條提示信息,表示數據庫創建成功,當再次點擊createDAtabase按鈕後就不會再打印提示信息,因為數據庫創建成功後不會再創建數據庫

數據庫創建成功後可以在app所在的包下找到一個database文件夾,databases文件夾下可以找到創建好的數據庫文件

將people.db導出後,在使用SQLite Expert可以查看創建好的數據庫中的內容
單擊Insert按鈕後可以看到,向數據庫中插入了10個學生的信息

按下Delete按鈕後會刪除"劉得意"信息,可以看到數據庫中已經沒有劉得意的信息了

單擊Update按鈕後,將所有學生的學號都減少了1

點擊Select按鈕後,查找數據庫中所有學生的姓名和與姓名對應的C++成績,並在logcat中輸出

實現方式:
1、使用Android Studio創建一個Android工程,修改activity_main.xml文件
package com.fyt.databasedemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
//創建一個抽象類SQLiteOpenHelper的實現類MyOpenHelper
public class MyOpenHelper extends SQLiteOpenHelper {
/**
* MyOpenHelper構造方法
* @param context 上下文
* @param name 數據庫文件的名字
* @param factory 游標工廠(結果集)
* @param version 數據庫的版本號(用於升級)
*/
public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//創建數據庫時,調用此方法
@Override
public void onCreate(SQLiteDatabase db) {
Log.d("MainActivity", "數據庫創建成功");
//創建一個學生表
db.execSQL("create table student(_id integer primary key autoincrement, name char(10), age integer, no integer, cpp float, math float, english float)");
}
//數據庫升級時調用此方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d("MainActivity", "數據庫升級成功");
}
}
package com.fyt.databasedemo;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
//用於創建幫助器對象
private MyOpenHelper oh;
//用於創建數據庫對象
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//創建數據庫
public void createDatabase(View view) {
//創建幫助器對象
oh = new MyOpenHelper(this, "people.db", null, 1);
//創建數據庫對象
db = oh.getWritableDatabase();
}
//向數據庫中添加數據
public void Insert(View view) {
//向學生表中添加10名學生
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"劉得意", 19, 1001, 60, 98, 75});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"王銳", 20, 1002, 63, 90, 96});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"何煜中", 19, 1003, 90, 73, 82});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"王磊", 21, 1004, 87, 86, 92});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"馮松", 19, 1005, 89, 98, 83});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"裴培", 20, 1006, 75, 82, 91});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"馬骁", 19, 1007, 62, 67, 90});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"馬婧", 20, 1008, 98, 84, 87});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"周俊升", 19, 1009, 57, 68, 96});
db.execSQL("insert into student(name, age, no, cpp, math, english) values(?, ?, ?, ?, ?, ?)", new Object[]{"賀祺", 21, 1010, 61, 96, 72});
}
//刪除數據庫中的數據
public void Delete(View view) {
//刪除姓名為"劉得意"的學生的信息
db.execSQL("delete from Student where name = ?", new Object[]{"劉得意"});
}
//修改數據庫中的數據
public void Update(View view) {
//將數據庫中所有人的學號減少1
db.execSQL("update student set no = no -1");
}
//查詢數據庫中的數據
public void Select(View view) {
//查詢數據庫中學生的姓名和以其對應的C++成績,返回值為一個結果集
Cursor cursor = db.rawQuery("select name, cpp from student", null);
while (cursor.moveToNext()) {
//cursor.getColumnIndex("name")獲得姓名所在的列
String name = cursor.getString(cursor.getColumnIndex("name"));
float cpp = cursor.getFloat(cursor.getColumnIndex("cpp"));
//輸出學生的姓名和與姓名對應的C++成績
Log.d("MainActivity", '[' + name + ", " + cpp + ']');
}
}
}
Android編程之繪制文本(FontMetrics)實現方法
本文實例講述了Android編程之繪制文本(FontMetrics)實現方法。分享給大家供大家參考,具體如下:Canvas 作為繪制文本時,使用FontMetrics對象
Android的HTTP類庫Volley入門學習教程
1. 什麼是Volley我們平時在開發Android應用的時候不可避免地都需要用到網絡技術,而多數情況下應用程序都會使用HTTP協議來發送和接收網絡數據。Android系
Android 自定義學習(5)自定義Progressbar
自定義View學習的最後一期了,先上效果圖。 相信大家心中都有自己的實現方法,這裡就貼上我的方法以供參考。/** * 刻度畫筆 */ private P
Android使用PullToRefresh實現上拉加載和下拉刷新效果的代碼
在沒給大家介紹正文之前,先給大家介紹展示下運行圖,如果大家感覺還不錯,請繼續往下閱讀:相關閱讀:分享Android中pullToRefresh的使用心得項目已同步至:ht
Android進階之旅------)解決Jackson、Gson解析Json數據時,Json數據中的Key為Java關鍵字時解析為null的問題
1、問題描述首先,需要解析的Json數據類似於下面的格式,但是包含了Ja