`

Sqlite无脑使用

阅读更多
不会sqlite的人再也不用愁了,无脑使用,只要会粘贴复制就OK了(使用sqltie自带的参数太麻烦,不明白在性能上是不是有什么特别的优势,直接放弃,使用以前熟悉的sql)

首先创建数据库类:


public class DatabaseHelper extends SQLiteOpenHelper {
 
    private static final String DB_NAME = "mydata.db"; //数据库名称
    private static final int version = 1; //数据库版本
     
    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, version);
        // TODO Auto-generated constructor stub
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";          
        db.execSQL(sql);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
 
    }
 
}


SQLiteOpenHelper类介绍

SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。


方法名方法描述
SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)构造方法,一般是传递一个要创建的数据库名称那么参数
onCreate(SQLiteDatabase db)创建数据库时调用
onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)版本更新时调用
getReadableDatabase()创建或打开一个只读数据库
getWritableDatabase()创建或打开一个读写数据库

下面来介绍调用的方法

创建数据库

这里特别的地方是通过调用了SQLiteOpenHelper类的getReadableDatabase()方法来实现创建一个数据库的

DatabaseHelper database = new DatabaseHelper(this);//这段代码放到Activity类中才用this
SQLiteDatabase db = null;
db = database.getReadalbeDatabase();

SQLiteDatabase类为我们提供了很多种方法,而较常用的方法如下
(返回值)方法名方法描述
(int) delete(String table,String whereClause,String[] whereArgs)删除数据行的便捷方法
(long) insert(String table,String nullColumnHack,ContentValues values)添加数据行的便捷方法
(int) update(String table, ContentValues values, String whereClause, String[] whereArgs)更新数据行的便捷方法
(void) execSQL(String sql)执行一个SQL语句,可以是一个select或其他的sql语句
(void) close()关闭数据库
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)查询指定的数据表返回一个带游标的数据集
(Cursor) rawQuery(String sql, String[] selectionArgs)运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)

数据的添删改查分别可以通过2种途径来实现

数据的添加

1.使用insert方法

ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据cv.put("username","Jack Johnson");//添加用户名
cv.put("password","iLovePopMusic"); //添加密码
db.insert("user",null,cv);//执行插入操作

2.使用execSQL方式来实现
String sql = "insert into user(username,password) values ('Jack Johnson','iLovePopMuisc');//插入操作的SQL语句
db.execSQL(sql);//执行SQL语句


数据的删除

同样有2种方式可以实现

String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Jack Johnson"};//删除的条件参数
db.delete("user",whereClause,whereArgs);//执行删除

使用execSQL方式的实现
String sql = "delete from user where username='Jack Johnson'";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作

数据修改

同上,仍是2种方式

ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("password","iHatePopMusic");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Jack Johnson"};//修改条件的参数
db.update("user",cv,whereClause,whereArgs);//执行修改


使用execSQL方式的实现
String sql = "update [user] set password = 'iHatePopMusic' where username='Jack Johnson'";//修改的SQL语句
db.execSQL(sql);//执行修改


数据查询

数据查询相对前面几种方法就复杂一些了,因为查询会带有很多条件

通过query实现查询的


public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)


各参数说明:

table:表名称
colums:列名称数组
selection:条件子句,相当于where
selectionArgs:条件语句的参数数组
groupBy:分组
having:分组条件
orderBy:排序类
limit:分页查询的限制
Cursor:返回值,相当于结果集ResultSet
针对游标(Cursor)也提供了不少方法


方法名方法描述
getCount()总记录条数
isFirst()判断是否第一条记录
isLast()判断是否最后一条记录
moveToFirst()移动到第一条记录
moveToLast()移动到最后一条记录
move(int offset)移动到指定的记录
moveToNext()移动到下一条记录
moveToPrevious()移动到上一条记录
getColumnIndex(String columnName)获得指定列索引的int类型值


实现代码
Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标
if(c.moveToFirst()){//判断游标是否为空
    for(int i=0;i<c.getCount();i++){
        c.move(i);//移动到指定记录
        String username = c.getString(c.getColumnIndex("username");
        String password = c.getString(c.getColumnIndex("password"));
    }
}

通过rawQuery实现的带参数查询
Cursor c = db.rawQuery("select * from user where username=?",new Stirng[]{"Jack Johnson"});
if(cursor.moveToFirst()) {
    String password = c.getString(c.getColumnIndex("password"));
}
分享到:
评论

相关推荐

    SQLite3初学示例代码

    SQLite3的创建添加查寻原理全在代码里,对于初学SQLite3来说配置SQLite3在VC平台下使用是一件非常麻烦苦脑的事,此代码包不需要你配置SQLite3就能直接运行,因为配置文件以经包含好并且进行了一些注解。可以了解其...

    民航订票管理系统 python+SQLite

    通过学习和实践民航订票管理系统,开发者不仅可以掌握Python编程和SQLite数据库的基本使用,还能了解到Web开发的基本流程,提高软件工程的实践能力。这样的项目对于初学者来说是一个很好的起点,对于有经验的开发者...

    brobbot-sqlite-brain

    brobbot-sqlite-大脑 受SQLite支持的大脑。 用法 在您的: npm install --save brobbot-sqlite-brain ./index.sh -b sqlite 配置 数据库名称 设置BROBBOT_SQLITE_DB_NAME以更改默认数据库名称 ( 'brobbot' )。 这...

    开发人员必须学会的ORM三层构架思想

    ORM是用于处理关系型数据库的一种技术,它通过将数据库中的表映射为对象,使得开发者可以使用面向对象的方式来操作数据库,减少了与SQL的直接交互,提高了开发效率和代码可读性。在本例中,可能使用的是诸如...

    微信HTML5在线朋友圈游戏源码带安装部署教程-最强大脑.rar

    3. 数据库脚本:如果游戏需要用户数据存储,可能包含MySQL或SQLite数据库的创建和填充脚本。 4. README或INSTALL文件:提供快速入门指导和注意事项。 5. 开发者工具:如Webpack配置文件、Gulp或Grunt任务脚本,用于...

    Python南京脑科医院实验室录入系统源码.zip

    3. **数据库操作**:Python有多种数据库接口,如sqlite3、MySQLdb、pymongo等,用于存储和检索实验室数据。了解SQL语言和数据库设计原理也很重要。 4. **用户界面**:可能使用HTML、CSS和JavaScript构建前端界面,...

    学生信息管理系统

    SQLite是一个轻量级的、嵌入式的、关系型数据库,无需单独的服务器进程,可以直接在应用程序内部运行,这使得它非常适合于小型到中型规模的应用,例如学生信息管理这样对数据存储需求不大的场景。 QT库中的...

    labjs-downloader:一个在Rs VM中打包Ring VM的存储库,用于运行愚蠢的小Labjs脚本来解压缩SQLite实验数据

    Lab.js sqlite解压缩奇点R图像示例 奇点图像定义,从派生 如果这很安静,并且除非有问题,否则不要执行STDOUT / STDERR,那就太好了。 关于 r.def是用于生成图像的奇点定义。 见run_script.sh对于如何启动一个实例...

    基于PHP的YnFile 亿脑网盘在线存储服务商 1.0.zip

    在实际部署和使用YnFile时,开发者需要熟悉PHP编程语言,了解基本的服务器环境配置(如Apache或Nginx + PHP-FPM),以及数据库管理(如MySQL或SQLite)。此外,对于前端技术的了解也有所帮助,因为系统可能涉及到...

    Android应用源码基于安卓的移动医疗终端系统带论文.rar

    系统主要功能包括血压检测、血糖检测、心脏听诊录音、相关健康信息收集等模块,主要使用的技术有AndroidUI设计、SQLite轻量级数据库存储健康信息、Android蓝牙通信协议及数据传输、图形绘制、摄像头采集图像加工和...

    landlord:斗地主

    自带无脑出牌AI;服务端经过压力测试,客户端代码来自 。 烦请请各位老爷点个star。。。 运行步骤: 1.下载源码: git clone https://github.com/dwg255/landlord.git 2.编译: cd landlord/main go build -o ../main....

    asp.net三层架构在线考试系统含数据库

    在本系统中,数据访问层可能使用ADO.NET或者Entity Framework等技术,与数据库进行通信,如SQL Server或MySQL等。数据库中可能包含了试题库、考生信息、考试记录等数据表。 【含数据库】意味着系统包含了用于存储和...

    听脑

    4. **数据库交互**:为了存储和检索音乐数据,项目可能使用了数据库,如SQL Server或SQLite。C#中的ADO.NET或Entity Framework可以用来与数据库进行交互。 5. **RESTful API**:ListenBrainz服务可能提供了RESTful ...

    Head First Python、Python核心编程

    你想过可以通过一本书就学会Python吗?《Head First Python(中文版)》超越枯燥的语法和甩法手册,通过...·学习Python中有关数据库的API,以及如何在Python中使用各种不同的数据库系统,包括MySQL、Postgres和 SQLite。

    移动医疗终端系统源码.zip

    系统主要功能包括血压检测、血糖检测、心脏听诊录音、相关健康信息收集等模块,主要使用的技术有AndroidUI设计、SQLite轻量级数据库存储健康信息、Android蓝牙通信协议及数据传输、图形绘制、摄像头采集图像加工和...

    MyAndroidTest1

    也可能是数据库操作的示例,展示了SQLite的使用。 在这个"MyAndroidTest1"项目中,开发者可能涵盖了一系列Android开发的基础到进阶知识,例如: 1. **基本UI搭建**:使用XML布局文件创建界面,包括LinearLayout、...

    mybase:第三只脑

    开发者们通过Git版本控制系统进行协作,使用Python的开发工具(如PyCharm或Visual Studio Code)进行编码,并利用GitHub或类似的平台进行版本控制和分享。 在实际应用中,mybase可能提供命令行界面(CLI)和/或图形...

    脑测验

    Java可以使用JDBC API连接并操作数据库,如MySQL、SQLite等。 7. **多线程**:为了提升用户体验,一些计算密集型任务(如加载新问题)可以放在后台线程执行,避免阻塞主线程导致UI卡顿。 8. **设计模式**:在项目...

    三层体系结构的应用-学员管理系统(前台 后台)

    开发者可能使用了如SQL Server或SQLite这样的数据库管理系统,并将数据库文件打包在项目中,以便于用户可以直接运行程序而无需额外配置数据库。 总的来说,这个“学员管理系统”项目展示了如何使用C#实现一个完整的...

Global site tag (gtag.js) - Google Analytics