Android应用中如何使用数据库 (安卓 使用数据库)
随着智能手机的快速普及,越来越多的企业开始向移动应用领域转型,开发出各种各样的Android应用。在这些应用程序中,需要存储用户数据的需求也日益增多。一般而言,开发人员可以使用数据库来存储和管理这些数据。本文将详细介绍 Android 应用中如何使用数据库。
一、数据库介绍
数据库是指一组相关数据的。数据库软件可以让用户在计算机或服务器上创建一个或多个数据库来存储数据。数据库能够非常方便地对数据进行增加、删除、修改和查询,是现代计算机应用中必不可少的一项技术。
在 Android 应用中,常用的数据库有 SQLite 和 ORACLE 等。
二、SQLite 简介
SQLite 是一个开源的轻量级嵌入式关系型数据库管理系统。它被广泛应用在各种移动应用程序中,包括 Android 应用。SQLite 具有体积小、速度快、易于集成等优点,在开发 Android 应用时,使用 SQLite 可以方便地管理和存储用户数据。
在 Android 应用中使用 SQLite 数据库,需要使用 Android 提供的 API 以及 SQLite 的 SQL 语句来操作数据库。
三、Android 应用使用 SQLite 数据库的示例
下面将通过一个简单的 Android 应用示例来介绍如何使用 SQLite 数据库。
在 Android Studio 中,创建一个新项目并选中 Empty Activity 模板。然后,创建一个新的类来管理数据库,如下图所示:
代码如下所示:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “User.db”;
private static final String TABLE_NAME = “user_table”;
private static final String COL_ID = “ID”;
private static final String COL_NAME = “NAME”;
private static final String COL_EML = “EML”;
private static final String COL_PHONE = “PHONE”;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(“create table ” + TABLE_NAME + ” (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,EML TEXT,PHONE TEXT)”);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + TABLE_NAME);
onCreate(db);
}
}
上面的代码中,DatabaseHelper 类继承了 Android 提供的 SQLiteOpenHelper 类,并重写了该类的 onCreate() 和 onUpgrade() 方法。在 onCreate() 方法中,创建了一个名为 User.db 的数据库,并在数据库中创建了一个名为 user_table 的表。该表有4个字段,即 ID、NAME、EML 和 PHONE。在 onUpgrade() 方法中,当数据库需要升级时,会删除原有的 user_table 表,并新建一个新的表。
接下来,在 MnActivity 类中,定义添加用户、更新用户和删除用户的方法:
public class MnActivity extends AppCompatActivity {
EditText editTextName, editTextEml, editTextPhone, editTextID;
Button addButton, updateButton, deleteButton, viewButton;
DatabaseHelper myDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mn);
editTextName = (EditText)findViewById(R.id.editText_name);
editTextEml = (EditText)findViewById(R.id.editText_eml);
editTextPhone = (EditText)findViewById(R.id.editText_phone);
editTextID = (EditText)findViewById(R.id.editText_id);
addButton = (Button)findViewById(R.id.button_add);
updateButton = (Button)findViewById(R.id.button_update);
deleteButton = (Button)findViewById(R.id.button_delete);
viewButton = (Button)findViewById(R.id.button_view);
myDb = new DatabaseHelper(this);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertData(editTextName.getText().toString(),
editTextEml.getText().toString(),
editTextPhone.getText().toString() );
if(isInserted == true)
Toast.makeText(MnActivity.this,”Data Inserted”,Toast.LENGTH_LONG).show();
else
Toast.makeText(MnActivity.this,”Data not Inserted”,Toast.LENGTH_LONG).show();
}
});
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isUpdated = myDb.updateData(editTextID.getText().toString(),
editTextName.getText().toString(),
editTextEml.getText().toString(),
editTextPhone.getText().toString());
if(isUpdated == true)
Toast.makeText(MnActivity.this,”Data Updated”,Toast.LENGTH_LONG).show();
else
Toast.makeText(MnActivity.this,”Data not Updated”,Toast.LENGTH_LONG).show();
}
});
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Integer deletedRows = myDb.deleteData(editTextID.getText().toString());
if(deletedRows > 0)
Toast.makeText(MnActivity.this,”Data Deleted”,Toast.LENGTH_LONG).show();
else
Toast.makeText(MnActivity.this,”Data not Deleted”,Toast.LENGTH_LONG).show();
}
});
viewButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = myDb.getAllData();
if(res.getCount() == 0) {
// show message
showMessage(“Error”,”Nothing found”);
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append(“ID :”+ res.getString(0)+”\n”);
buffer.append(“NAME :”+ res.getString(1)+”\n”);
buffer.append(“EML :”+ res.getString(2)+”\n”);
buffer.append(“PHONE :”+ res.getString(3)+”\n\n”);
}
// Show all data
showMessage(“Data”,buffer.toString());
}
});
}
public void showMessage(String title,String Message){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(Message);
builder.show();
}
}
上面的代码中,通过调用 DatabaseHelper 类中定义的 insertData()、updateData()、deleteData() 和 getAllData() 方法,分别实现了添加用户、更新用户、删除用户和查看用户的功能。
四、
使用数据库是 Android 应用开发中的重要技术之一。本文从介绍数据库的基本概念开始,详细讲解了在 Android 应用中使用 SQLite 数据库的方法,并通过一个简单的示例程序演示了数据库的具体操作过程。希望本文能够帮助读者更好地理解 Android 应用中数据库的应用。
相关问题拓展阅读:
- android 怎么读取数据库中的数据?
android 怎么读取数据库中的数据?
做一个WEBServerse取出数据转换成XML输出,再用android。bundle接受编译
android读取数据库可以使用sqlite一些api进行读取,实例如下:
陵碧基 /**
* 查找一条数据
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //创建数据库辅助类
Cursor cursor =db.rawQuery(“select * from user where uid=?”, new String{uid.toString()}); //创建一个游标
if(cursor.moveToFirst()){ //循环遍历查找数组
int uid2=cursor.getInt(cursor.getColumnIndex(“uid”));
String uname=cursor.getString(cursor.getColumnIndex(“uname”));
String uaddress=cursor.getString(cursor.getColumnIndex(“uaddress”));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
尺谨return user;
}
cursor.close();
慧则return null;
}
Android里面Sqlite的使用
使用步骤
1,创建一个SqliteOpenHelper的子类
public class MySqliteOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1;//数据库版本 public static final String DATABASE_NAME=”user.db”;//数据库文件 名 public static final String TABLE_NAME=”user”;//表名 //字段名 public static final String ID=”id”; public static final String NAME=”name”; public static final String AGE=”age”; /** * 构造方法 * @param context :闷孝上下文 * @param name :数据文件名 * @param factory :数据库工厂 使用过程中传null * @param version :数据库版本*/ public MySqliteOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * 当数据库打开时调用 * @param db 数据库操作对象 */ @Override public void onOpen(SQLiteDatabase db) {super.onOpen(db);System.out.println(“onOpen”); } /** * 创建数据库的方法 * @param db 数据库操作对象升罩迅 CRUDCREATE READ UPDATE DELETE */ @Override public void onCreate(SQLiteDatabase db) {System.out.println(“onCreate”); } /** *当数据库的版本有提升时调用 * @param db 数据库操作对象 * @param oldVersion 老吵此版本号 * @param newVersion 新版本号 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新表//更新数据System.out.println(“onUpgrade”); } /** * 当数据库版本降低时调用 —没什么用 * @param db * @param oldVersion * @param newVersion */ @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {super.onDowngrade(db, oldVersion, newVersion);System.out.println(“onUpgrade”); }}
onCreate方法:在之一次调用getReadableDatabase(),getWriteableDatabase()方法里调用【如果磁盘上没有数据库文件就会调用】
onOpen方法:在调用getReadableDatabase(),getWriteableDatabase()调用
onUpgrade()方法,当数据库版本提升时调用
getWritableDatabase()得到可读可写的数据库操作对象。如果内存不足,该方法会锁定数据库,并抛异常
getReadableDatabase()得到可读写的数据库操作对象,,如果内存不足,数据库就只能写了
2,重写onCreate方法
public MySqliteOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = “CREATE TABLE ” + TABLE_NAME + “( ” + _ID + ” Integer primary key autoincrement,” + NAME + ” TEXT, ” + PASSWORD + ” TEXT)”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
3,初始化数据库
//创建数据库
public void mysqlite(View view)
{
//创建 实现工具类
DBHelper dh = new DBHelper(“test.db”,1);
//连接数据库 获取数据库实例
//getWritableDatabase() 数据写满会报错
//getReadableDatabase() 数据写满不会报错
SQLiteDatabase sd = dh.getWritableDatabase();
sd.close();
4,对数据库进行CRUD
参考demo:
public class DBHelper { private final static String DATABASE_NAME = “TestDB2.db”;// 数据库文件名 private final static int VERSION = 1;// 数据库版本 private final static String TABLE_NAME = “users”;// 表名 private final static String _ID = “_id”;// 编号 private final static String NAME = “name”;// 用户名字段 private final static String PASSWORD = “password”;// 用户密码 // 操作数据库的类 private SQLiteDatabase database; MySQLiteOpenHepler hepler; // 写一个内部类去处理数据库的创建和版本的更新 class MySQLiteOpenHepler extends SQLiteOpenHelper { public MySQLiteOpenHepler(Context context) { super(context, DATABASE_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = “CREATE TABLE ” + TABLE_NAME + “( ” + _ID + ” Integer primary key autoincrement,” + NAME + ” TEXT, ” + PASSWORD + ” TEXT)”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } public DBHelper(Context context) { hepler = new MySQLiteOpenHepler(context); database = hepler.getWritableDatabase(); } // 添加 public void insert(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.insert(TABLE_NAME, null, values); } // 修改 public void update(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.update(TABLE_NAME, values, _ID + “=?”, new String { String.valueOf(user.getId()) }); } // 删除 public void delete(int id) { database.delete(TABLE_NAME, _ID + “=?”, new String { String.valueOf(id) }); }// 查询一个 public User queryById(int id) { User u = null; Cursor cursor = database.query(TABLE_NAME, null, _ID + “=?”, new String { String.valueOf(id) }, null, null, null); if (cursor.getCount() > 0) { cursor.moveToNext(); u = new User(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); } return u; } }
关于安卓 使用数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。