Android添加数据库代码详解
在Android开发中,SQLite是一个轻量级的嵌入式关系数据库管理系统,它被广泛用于存储和管理应用程序的数据,本文将详细介绍如何在Android项目中添加和使用SQLite数据库。
引入依赖库
确保你的build.gradle
文件中包含以下依赖项:
dependencies { implementation 'androidx.sqlite:sqlite:2.1.0' }
创建数据库帮助类
创建一个名为DatabaseHelper
的类,这个类继承自SQLiteOpenHelper
,在这个类中,你可以定义数据库的名称、版本以及创建表的SQL语句。
DatabaseHelper.java
package com.example.myapp; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; // SQL语句来创建表 private static final String CREATE_TABLE_USER = "CREATE TABLE user (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_USER); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS user"); onCreate(db); } }
使用数据库帮助类
在你的活动或应用中,通过调用DatabaseHelper
类的方法来操作数据库,插入数据和查询数据。
MainActivity.java
package com.example.myapp; import android.os.Bundle; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private DatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new DatabaseHelper(this); insertData(); queryData(); } private void insertData() { // 获取可写数据库实例 SQLiteDatabase db = dbHelper.getWritableDatabase(); // 插入数据 db.execSQL("INSERT INTO user (name, age) VALUES ('Alice', 25)"); db.execSQL("INSERT INTO user (name, age) VALUES ('Bob', 30)"); // 关闭数据库连接 db.close(); Toast.makeText(this, "Data inserted successfully", Toast.LENGTH_SHORT).show(); } private void queryData() { // 获取只读数据库实例 SQLiteDatabase db = dbHelper.getReadableDatabase(); // 查询数据 String[] projection = {"id", "name", "age"}; Cursor c = db.query("user", projection, null, null, null, null, null); // 处理查询结果 if (c != null) { while (c.moveToNext()) { int id = c.getInt(c.getColumnIndexOrThrow("id")); String name = c.getString(c.getColumnIndexOrThrow("name")); int age = c.getInt(c.getColumnIndexOrThrow("age")); System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age); } c.close(); } else { Toast.makeText(this, "No data found", Toast.LENGTH_SHORT).show(); } } }
权限声明(如果需要)
如果你的应用需要访问外部存储或其他敏感资源,请在AndroidManifest.xml
中声明相应的权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
运行程序
确保你已经正确配置了项目,并运行程序,你应该会看到插入数据的提示,并在控制台输出查询到的数据。
相关问题与解答
Q1: 如何升级数据库?
A1: 当你修改数据库结构(如增加新表或列),你需要更新数据库的版本号,并在onUpgrade
方法中编写升级逻辑,删除旧表并重新创建:
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS user"); onCreate(db); }
每次应用启动时,系统会自动调用onUpgrade
方法来升级数据库。
Q2: 如何防止SQL注入攻击?
A2: 使用参数化查询代替拼接字符串的方式构建SQL语句,使用query
方法时传递参数:
String selection = "name = ?"; String[] selectionArgs = {"Alice"}; Cursor c = db.query("user", projection, selection, selectionArgs, null, null, null);
这样可以有效防止SQL注入攻击。
小伙伴们,上文介绍了“android添加数据库代码”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/636684.html