Android SQLite 示例 [关闭]
Posted
技术标签:
【中文标题】Android SQLite 示例 [关闭]【英文标题】:Android SQLite Example [closed] 【发布时间】:2012-08-14 11:43:56 【问题描述】:我是 android 新手,我必须创建一个需要使用 SQLite 数据库的应用程序。 我对 SQLite 的装备不太好。
能否告诉我SQLiteOpenHelper
类的用途和用途,并提供一个简单的数据库创建和插入示例?
【问题讨论】:
sqlite-tutorial 技术太多了。我没有时间回忆它到底是什么,所以赞成。 【参考方案1】:Sqlite 帮助类帮助我们管理数据库创建和版本管理。
SQLiteOpenHelper 负责所有数据库管理活动。要使用它,
1.覆盖SQLiteOpenHelper
的onCreate(), onUpgrade()
方法。可选择覆盖 onOpen() 方法。
2.使用该子类创建可读或可写数据库,并使用 SQLiteDatabase 的四个 API 方法insert(), execSQL(), update(), delete()
来创建、读取、更新和删除表的行。
创建 MyEmployees 表并选择和插入记录的示例:
public class MyDatabaseHelper extends SQLiteOpenHelper
private static final String DATABASE_NAME = "DBName";
private static final int DATABASE_VERSION = 2;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table MyEmployees
( _id integer primary key,name text not null);";
public MyDatabaseHelper(Context context)
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database)
database.execSQL(DATABASE_CREATE);
// Method is called during an upgrade of the database,
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion)
Log.w(MyDatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS MyEmployees");
onCreate(database);
现在你可以像下面这样使用这个类了,
public class MyDB
private MyDatabaseHelper dbHelper;
private SQLiteDatabase database;
public final static String EMP_TABLE="MyEmployees"; // name of table
public final static String EMP_ID="_id"; // id value for employee
public final static String EMP_NAME="name"; // name of employee
/**
*
* @param context
*/
public MyDB(Context context)
dbHelper = new MyDatabaseHelper(context);
database = dbHelper.getWritableDatabase();
public long createRecords(String id, String name)
ContentValues values = new ContentValues();
values.put(EMP_ID, id);
values.put(EMP_NAME, name);
return database.insert(EMP_TABLE, null, values);
public Cursor selectRecords()
String[] cols = new String[] EMP_ID, EMP_NAME;
Cursor mCursor = database.query(true, EMP_TABLE,cols,null
, null, null, null, null, null);
if (mCursor != null)
mCursor.moveToFirst();
return mCursor; // iterate to get each value.
现在您可以在活动中使用 MyDB 类来进行所有数据库操作。创建记录将帮助您插入值,类似地您可以拥有自己的更新和删除函数。
【讨论】:
非常感谢您为我提供了数据库的演示骨架。它真的非常有用和高效,足以回答我的相关查询。再次感谢.. 问候 :) @JJPA - 使用 SQLiteOpenHelper 导致我的应用程序在 android 2.X 上失败并出现错误 CREATE TABLE android_metadata failed ... 在 4.x 上工作正常 + 知道如何解决这个问题吗? @user1492955 This 可能会对您有所帮助。 @JJPA - 这个问题是我发布的,我没有得到回复 这是我编写/使用的一个包装器,它使在 android 环境中使用 SQLite 变得稍微容易一些 - SqlDb【参考方案2】:以下链接对你有帮助
1. Android Sqlite Database
2. Tutorial 1
数据库助手类:
管理数据库创建和版本管理的帮助类。
您创建一个实现onCreate(SQLiteDatabase)
、onUpgrade(SQLiteDatabase, int, int)
和可选的onOpen(SQLiteDatabase)
的子类,该类负责打开数据库(如果存在),如果不存在则创建它,并根据需要对其进行升级。事务用于确保数据库始终处于合理状态。
此类使ContentProvider
实现可以轻松地将数据库的打开和升级推迟到第一次使用,以避免因长时间运行的数据库升级而阻塞应用程序启动。
你需要更多参考这个链接Sqlite Helper
【讨论】:
tuturial_2 离线。【参考方案3】:DBHelper 类负责处理 sqlite 数据库的打开和关闭以及创建和更新,关于它如何工作的一篇不错的文章是 here。当我开始使用 android 时,它非常有用(但是我最近一直在使用 Objective-c,并且忘记了它的大部分用途。
【讨论】:
【参考方案4】:使用 Helper 类,您可以访问 SQLite 数据库,并可以通过覆盖 onCreate() 和 onUpgrade() 方法对其执行各种操作。
http://technologyguid.com/android-sqlite-database-app-example/
【讨论】:
以上是关于Android SQLite 示例 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
支持 UPSERT 的 Android SQLite ORM? [关闭]
在 Android SQLite 中处理日期的最佳方式 [关闭]
什么是 SQLite?可以放音频文件并与android一起使用吗? [关闭]