Android SQLite数据库实例教程与使用指南

版权申诉
0 下载量 84 浏览量 更新于2024-10-13 收藏 36KB RAR 举报
资源摘要信息:"Android SQLite数据库使用实例与介绍" 1. Android SQLite数据库概述 SQLite是一个轻量级的数据库,它包含在Android SDK中,允许开发者在Android应用程序中使用SQL语言来创建和操作数据库。它以文件的形式存储在设备上,适合用于存储少量数据,如应用配置信息、轻量级的数据缓存等。SQLite作为一个嵌入式数据库,不需要配置或安装,因此特别适合在移动设备上使用。 2. SQLite数据库在Android中的使用场景 在Android应用开发中,SQLite数据库可以用来处理数据存储的多种需求。例如,可以用来保存应用的设置选项、用户数据、搜索历史、应用日志等。尽管Android提供了SharedPreferences用于轻量级的数据存储,但当需要存储结构化数据时,使用SQLite数据库会更加方便和有效。 3. 使用SQLiteOpenHelper类管理数据库 在Android开发中,通常使用SQLiteOpenHelper类来管理数据库的创建和版本管理。SQLiteOpenHelper提供了onCreate()和onUpgrade()两个回调方法,分别用于数据库创建时执行的初始化操作和数据库升级时的处理。开发者可以通过覆写这些方法来执行建表、添加或修改表结构等操作。 4. Android数据库操作示例 以下是一个简单的示例,演示如何在Android中使用SQLite数据库来创建一个用户表,并进行简单的增删改查操作。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "example.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建用户表 String CREATE_USERS_TABLE = "CREATE TABLE users (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, age INTEGER, address TEXT)"; db.execSQL(CREATE_USERS_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库时删除旧表并创建新表 db.execSQL("DROP TABLE IF EXISTS users"); onCreate(db); } // 添加用户 public void addUser(String name, int age, String address) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); values.put("address", address); db.insert("users", null, values); db.close(); } // 获取所有用户 public ArrayList<User> getAllUsers() { ArrayList<User> users = new ArrayList<>(); String query = "SELECT * FROM users"; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(query, null); if (cursor.moveToFirst()) { do { User user = new User(); user.setId(cursor.getInt(cursor.getColumnIndex("_id"))); user.setName(cursor.getString(cursor.getColumnIndex("name"))); user.setAge(cursor.getInt(cursor.getColumnIndex("age"))); user.setAddress(cursor.getString(cursor.getColumnIndex("address"))); users.add(user); } while (cursor.moveToNext()); } cursor.close(); db.close(); return users; } // 更新用户信息 public int updateUser(int id, String name, int age, String address) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); values.put("address", address); return db.update("users", values, "_id = ?", new String[] { String.valueOf(id) }); } // 删除用户 public void deleteUser(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete("users", "_id = ?", new String[] { String.valueOf(id) }); db.close(); } } ``` 在上述代码中,首先创建了DatabaseHelper类继承自SQLiteOpenHelper,实现了创建和更新数据库的方法。通过onCreate()方法创建了一个用户表,表中包含了_id、name、age和address四个字段。然后,通过addUser()、getAllUsers()、updateUser()和deleteUser()方法分别实现了向数据库中添加用户、获取所有用户、更新用户信息和删除用户的操作。 5. Android WebView组件介绍 Android WebView是用于在Android应用程序中显示网页内容的一个组件。它允许开发者将Web内容嵌入到应用程序中,提供了一个浏览器环境来渲染网页。WebView可以加载任何有效的网址,也可以加载本地HTML文件。 6. WebView的使用示例 以下是一个简单的示例,演示如何在Android应用中使用WebView来加载一个网页。 ```java public class WebViewActivity extends AppCompatActivity { private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_view); myWebView = (WebView) findViewById(R.id.webview); myWebView.getSettings().setJavaScriptEnabled(true); // 启用JavaScript myWebView.loadUrl("***"); // 加载网页 } @Override public void onBackPressed() { if (myWebView.canGoBack()) { myWebView.goBack(); // 在网页中可以返回则返回上一页面 } else { super.onBackPressed(); } } } ``` 在WebViewActivity中,首先获取布局中的WebView组件,并在onCreate()方法中进行配置,启用JavaScript并加载指定的网页URL。同时,重写了onBackPressed()方法来处理用户按下返回键时的行为,若WebView中有可返回的网页历史记录,则先返回到上一个页面,否则调用super.onBackPressed()方法执行默认的返回操作。 总结:在Android开发中,SQLite数据库提供了一种便捷的方式来进行本地数据存储。通过SQLiteOpenHelper类的帮助,开发者可以高效地管理数据库的版本、创建和升级操作。同时,WebView组件允许开发者在Android应用中嵌入网页,提供了一种简便的方式来显示网页内容。这两个知识点在构建复杂的Android应用时非常有用,能够帮助开发者处理数据存储和网页显示的需求。

E/AndroidRuntime: FATAL EXCEPTION: Thread-2 Process: com.example.cameradiary, PID: 21990 java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number. Expected identity hash: d0562aadd9063ca2a0141765861a8b25, found: 903c8b01c1005d9d530310defd042e19 at androidx.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.kt:147) at androidx.room.RoomOpenHelper.onOpen(RoomOpenHelper.kt:128) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.kt:287) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:428) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:317) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:232) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:190) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104) at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:638) at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:457) at com.example.cameradiary.userDAO_Impl.getALLUsers(userDAO_Impl.java:70) at com.example.cameradiary.SecondActivity$1.run(SecondActivity.java:60)

2023-05-25 上传