`
zhtch_123
  • 浏览: 81146 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SQLite数据库建立及相关操作

阅读更多

 

1. DatabaseHelper 创建数据库并建立数据连接
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 = "iblueye.db";
private static final int DATABASE_VERSION = 1;

public DatabaseHelper(Context context) {
// CursorFactory设置为null,使用默认值
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// 数据库第一次被创建时onCreate会被调用 INTEGER PRIMARY KEY AUTOINCREMENT
@Override
public void onCreate(SQLiteDatabase db) {
/* 智能家居创建的数据库 */
db.execSQL("CREATE TABLE IF NOT EXISTS profile"
+ "(profile_id VARCHAR PRIMARY KEY, profile_name VARCHAR,profile_enabled BOOL NOT NULL DEFAULT 0)");
db.execSQL("CREATE TABLE IF NOT EXISTS mode"
+ "(_id INTEGER PRIMARY KEY AUTOINCREMENT,profile_id VARCHAR, device_id VARCHAR, device_state VARCHAR)");

/* 智慧交通 */
db.execSQL("CREATE TABLE IF NOT EXISTS traffic"
+ "(traffic_id VARCHAR PRIMARY KEY, traffic_name VARCHAR, description VARCHAR, city VARCHAR,video_id VARCHAR)");

}

// 如果DATABASE_VERSION值被改为2,系统发现现有数据库版本不同,即会调用onUpgrade
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE profile ADD COLUMN other STRING");
db.execSQL("ALTER TABLE mode ADD COLUMN other STRING");
db.execSQL("ALTER TABLE traffic ADD COLUMN other STRING");
}
}
 

 2.HomeDBManager 数据库操作(增删查改)

 

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.wlx.iblueyeclient.model.home.Mode;
import com.wlx.iblueyeclient.model.home.Profile;

public class HomeDBManager {
private DatabaseHelper helper;
private SQLiteDatabase db;

public HomeDBManager(Context context) {
helper = new DatabaseHelper(context);
// 因为getWritableDatabase内部调用了mContext.openOrCreateDatabase(mName, 0,
// mFactory);
// 所以要确保context已初始化,我们可以把实例化DBManager的步骤放在Activity的onCreate里
db = helper.getWritableDatabase();
}

/**
* add profile
* 
* @param profile
*/
public void add(Profile profile) {
db.beginTransaction(); // 开始事务
try {
db.execSQL("INSERT INTO profile VALUES(?,?,?)",
new Object[] { profile.profileId, profile.profileName,
profile.isEnabled });
for (Mode mode : profile.modeList) {
db.execSQL("INSERT INTO mode VALUES(null,?,?,?)",
new Object[] { profile.profileId, mode.deviceId,
mode.deviceState });
}
db.setTransactionSuccessful(); // 设置事务成功完成
} finally {
db.endTransaction(); // 结束事务
}
}

/**
* update profile's name
* 
* @param profile
*/
public void updateProfileName(Profile profile) {
ContentValues cv = new ContentValues();
cv.put("profile_name", profile.profileName);
db.update("profile", cv, "profile_id = ?",
new String[] { profile.profileId });
}

/**
* delete old profile
* 
* @param profile
*/
public void deleteOldProfile(Profile profile) {
db.delete("profile", "profile_id == ?",
new String[] { String.valueOf(profile.profileId) });
}

/**
* query all profiles, return list
* 
* @return List<Profile>
*/
public List<Profile> query() {
ArrayList<Profile> profileList = new ArrayList<Profile>();
Cursor c = queryProfileCursor();
while (c.moveToNext()) {
Profile profile = new Profile();
profile.profileId = c.getString(c.getColumnIndex("profile_id"));
profile.profileName = c.getString(c.getColumnIndex("profile_name"));
profile.isEnabled = Boolean.parseBoolean(c.getString(c
.getColumnIndex("profile_enabled")));

String modeId = c.getString(c.getColumnIndex("mode_id"));
Cursor r = queryModeCursor(new String[] { "mode_id='" + modeId
+ "'" });
List<Mode> modeList = new ArrayList<Mode>();
while (r.moveToNext()) {
Mode mode = new Mode();
mode.deviceId = r.getString(r.getColumnIndex("device_id"));
mode.deviceState = r
.getString(r.getColumnIndex("device_state"));
modeList.add(mode);
}
profile.modeList = modeList;
profileList.add(profile);
}
c.close();
return profileList;
}

/**
* query all profiles, return cursor
* 
* @return Cursor
*/
public Cursor queryProfileCursor() {
Cursor c = db.rawQuery("SELECT * FROM profile", null);
return c;
}

/**
* query all mode, return cursor
* 
* @return Cursor
*/
public Cursor queryModeCursor(String[] selectionArgs) {
Cursor c = db.rawQuery("SELECT * FROM profile", selectionArgs);
return c;
}

/**
* close database
*/
public void closeDB() {
db.close();
}
}
 
分享到:
评论

相关推荐

    android sqlite数据库实例

    Android SQLite 增、删、查、改操作源码

    sqlite3数据库电脑桌面操作软件

    可以在电脑桌面上可视化学习sqlite数据库、练习sql语句,非常适合学习阶段建立“sql语句”和“sqlite数据库”的关联。 使用方法:下载并解压后,双击“SQLiteStudio.exe”文件运行,之后弹出可视化界面。 你可以:...

    Android利用listview控件操作SQLite数据库实例

    Android为了操作SQlite数据库,提供了SQLiteDatabase类,其内封装了insert 、delete、update 、query 、执行SQL命令等操作。同时又为SQLiteDatabase提供了一个辅助类,SQLiteOpenHelper。它提供了两个重要的方法,...

    SQLite数据库操作类

    SQLite数据库操作类 SQLite第一个Alpha版本诞生于2000年5月. 至今已经有9个年头了. 它是遵守ACID的关联式数据库管理系统,包含在一个相对小的C库中。同时是D.RichardHipp建立的公有领域项目

    vs2019 C# 对SQLite数据库的增删改查的代码实例

    这是一个用C#实现的读写sqlite数据库的例子,希望能对正学习这一块的朋友有帮助。 需要使用System.Data.SQLite库 大至步骤如下: 在WinForms项目中添加一个数据库连接。你可以使用SQLiteConnection类来建立数据库...

    sqlite3数据库操作示例

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。...这个sqlite3数据库操作示例,里面有详细教程和sqlite打开工具。

    简易通讯录(SQLite实现)

    通过SQlite轻量级数据库生成的简易版通讯录,支持添加,编辑和删除操作。主要有主界面和第二界面,主界面主要为listview显示联系人姓名和电话。第二界面为编辑联系人界面,包括姓名,电话,地址和备注。其中主界面...

    python的tkinter库实现sqlite3数据库连接和操作样例源代码

    3. **建立数据库连接**:使用 sqlite3 模块连接到 SQLite 数据库文件。如果文件不存在,则会创建一个新的数据库文件。4. **创建游标对象**:通过数据库连接创建一个游标对象,用于执行 SQL 查询和命令。5. **执行 ...

    SQLite数据库管理工具 SQLiteExpert免费官方正版

    使用拖放操作之间的SQLite数据库复制表。 通过剪贴板中的数据导出到Excel。 数据编辑 在使用功能强大的就地编辑网格的编辑数据。 图像编辑器目前支持JPEG,PNG,BMP,GIF和ICO图像格式。 使用集成的十六...

    SQLite数据库处理软件

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源...

    Android源码演示简单的SQLite数据库常用操作.rar

    Android源码演示简单的SQLite数据库常用操作,不用contentProvider,直接用裸sql进行操作,示例效果如截图示,源码主要想表现两个意图:  1.介绍:DatabaseHelper.  2.删除表的知道了,但是删除数据库的没有发现. ...

    Android代码-Android SQLite 数据库工具集合

    轻量的 Android SQLite 数据库工具集合, 适合用SQLite做一些数据存储的项目. 根据Java实体自动生成数据库表. 不需要书写任何SQL语句即可实现对数据库的 创表 增 删 查 改 分页 操作. 所有的操作方法都是静态的...

    SQLITE3数据库列子

    该列子描述了SQLITE3数据库操作,包括数据库的建立和查询

    嵌入式SQLite数据库在电气工程师PDA中的应用

    针对电气工程师需要查询大量技术资料和公式以及...通过在嵌入式微处理器上移植Linux操作系统和SQLite数据库进行电气工程师PDA的应用软件设计,实现了在线计算、编辑和查询电气资料的功能,圆满地完成了该PDA的设计要求。

    VS2013连接SQLITE3方法

    我们在用VS2013操作SQLITE数据库时,会发现其默认安装根本没有连接SQLITE3的驱动连接。只有其它数据库的。所以要靠自己添加,但我也是走了很多弯路,下了N个驱动都不合,我的环境是WIN764+VS2013

    Android 使用SQLite数据库

    一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。 而void onOpen(SQLiteDatabase db) 则可以选择重写。同时此类还有3个synchronized方法:void close(),...

    php读取sqlite数据库入门实例代码

    SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中...单的用PHP连接SQLite建立表,并使用INSERT和SELECT语句操作SQLITE数据库。  

    SQLite 本地数据库登陆、注册、验证

    建立本地数据库SQLite,并进行登陆、注册、验证等操作。

    CPP-sqlite.rar_SQLite 操作_sqlite_sqlite cpp

    c++实现了基于sqlite数据库的基本操作,包括:数据库建立,链接,读写等基本操作。

    windows关于qt的数据库操作封装类以及用例,c++代码

    数据库建立与表建立 支持关于where语句查询的自动拼接。 支持text的模糊查询 windows 关于qt的数据库操作封装类 以及用例: SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C...

Global site tag (gtag.js) - Google Analytics