SQLite数据库操作 (原始操作)
android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,
使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。
对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。
execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句;
rawQuery()方法可以执行select语句。
参考 http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6995
官方 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
操作数据库步骤:
一、获取代表数据库的SQLiteDatabase对象
SQLiteDatabase 提供静态方法获取SQLiteDatabase对象

二、 对数据库CRUD操作
void execSQL(String sql, Object[] bindArgs )
官方解释:
Execute a single SQL statement that is NOT a SELECT/INSERT/UPDATE/DELETE.
For example, the following are good candidates for using this method:
- ALTER TABLE
- CREATE or DROP table / trigger / view / index / virtual table
- REINDEX
- RELEASE
- SAVEPOINT
- PRAGMA that returns no data
Cursor rawQuery(Stringsql, String[] selectionArgs)方法可以执行select语句。
废话说了那么多了,咋们举个栗子吧:
下面是布局文件,两个EditText , 用于插入数据库的name 和 content 字段的值。一个 TextView 用于显示从数据库查询的数据。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <EditText
android:layout_width="100px"
android:layout_height="wrap_content"
android:id="@+id/edt_name" />
<EditText
android:layout_width="100px"
android:layout_height="wrap_content"
android:id="@+id/edt_content" />
<TextView
android:text=""
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> <Button
android:onClick="insert"
android:id="@+id/btn_insert"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="click insert"
/>
<Button
android:onClick="show"
android:id="@+id/btn_show"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="click show"
/> </LinearLayout>
再加个界面吧, 一个Activity :
public class MainActivity extends Activity {
String tag="MainActivity";
SQLiteDatabase db;
EditText edt_name ,edt_content;
TextView tv_name;
public void createDB(){
// 捕获异常是因为db.execSQL(sql)方法,如果表已经存在会报异常。
try{
db=SQLiteDatabase.openOrCreateDatabase(getFilesDir().toString()+"test.db", null);
//创建表的sql语句
String sql="create table user(_id integer primary key autoincrement,name varchar(50) ,content varchar(250))";
db.execSQL(sql);
Log.i(tag, "--------createDB()-------");
}catch(Exception e){}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt_name=(EditText) findViewById(R.id.edt_name);
edt_content=(EditText) findViewById(R.id.edt_content);
tv_name =(TextView) findViewById(R.id.tv_name);
this.createDB();
}
public void insert(View v){
String sql="insert into user values(null,?,?)";
String name =edt_name.getText().toString();
String content =edt_content.getText().toString();
String[] bindArgs=new String[]{name,content};
db.execSQL(sql, bindArgs);
Log.i(tag, "--------updata()-------");
}
public void show(View v){
String sql="select * from user";
Cursor cursor = db.rawQuery(sql,null);
while(cursor.moveToNext()){
// 将数据全部显示在TextView中, 很不规范、阅读性很差的代码!!!
tv_name.setText(tv_name.getText().toString()+"\n id="+cursor.getString(0)+" name="+cursor.getString(1)+ " content="+cursor.getString(2));
}
Log.i(tag, "--------show()-------");
}
}
遇到的问题:
1、sql语句出错!
2、sql语句又出错!
3、重复创建表

以上就是原始的SQLiteDatabase操作:
一、 没有insert() 、 updata() 、delete() 、query() 等操作,因为 execSQL() 是万能的!
二、 没有使用SQLiteOpenHelper类 ( 但此类能简化我们对数据库的操作,在下一篇介绍)
补充:Cursor、 SQLiteDatabase 用完之后要close掉
一个很详细的教程:http://www.eoeandroid.com/thread-182378-1-1.html
SQLite数据库操作 (原始操作)的更多相关文章
- Android下的SQLite数据库的相关操作及AndroidTestCase测试
一:创建数据库 package com.itcode.mysqlite; import android.content.Context; import android.database.sqlite. ...
- 安卓基础之Sqlite数据库最最基础操作
Sqlite数据库基础操作 摘要:在应用中新建一个数据库,并创建一个数据表写入数据,然后读取表中数据并展示. 主要逻辑: 1.通过继承SQLiteOpenHelper自定义类,定制数据库的表结构,初始 ...
- sqlite数据库之简单操作
一 sqlite介绍 Sqlite是一种嵌入式数据库,类似于一个文件系统,是跟程序在一起的.跟mysql等数据库程序跟数据分离是不一样的. 应用场景:常用于保存本地配置,类似于本地文件系统,因此他内嵌 ...
- android——SQLite数据库存储(操作)
public class MyDatabaseHelper extends SQLiteOpenHelper { //把定义SQL建表语句成字符串常量 //图书的详细信息 //ID.作者.价格.页数. ...
- C# SQLite 数据库操作
C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQL ...
- Android数据读取之Sqlite数据库操作
咱们书接上文,继续来说说Android数据读取,这回,我们要讲的是Sqlite数据库的相关操作.以一个实例开始吧: 首先,上图,看看做成后的效果: 大概描述:类似于浏览器的收藏夹,网站名称,网站地址, ...
- [Swift通天遁地]七、数据与安全-(5)高效操作SQLite数据库
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Electron中使用sql.js操作SQLite数据库
推荐sql.js——一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...
- Android SQLite数据库
SQLite数据库 SQLiteDatabase //管理操作数据库 管理 openDatabase //打开 openOrCreateDatabase //打开或创建 操作 ...
随机推荐
- js之with
网上找资料的时候看到有js代码里出现了大量的with语句,有点好奇,这里做下总结: 1)简要说明 with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性. ...
- Android开源--MenuDrawer
开放的源地址:https://github.com/SimonVT/android-menudrawer 简单介绍:menudrawer是跟sliderMenu差点儿相同的一种框架,常被应用做设置界面 ...
- CSharp设计模式读书笔记(20):观察者模式(学习难度:★★★☆☆,使用频率:★★★★★)
观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式的别名包括发布-订阅(Publish/ ...
- Swift # 柯里化函数
前言 此次文章,讲述的是Swift的一个新特性(柯里化函数),可能很多iOS开发人员是第一次听这个词汇,包括我自己也是,自己也用了几天时间才总结出来,希望能帮助到各位咯,个人感觉偏向有开发经验的码友, ...
- Javascript规范
本文地址: http://www.hicss.net/evolve-your-javascript-code/ 方才在程序里看到一段JS代码,写法极为高明,私心想着若是其按照规范来写,定可培养对这门语 ...
- Java Persistence with MyBatis 3(中国版) 第五章 与Spring集成
MyBatis-Spring它是MyBatis子模块框.它用来提供流行的依赖注入框架Spring无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向切面编程 ...
- Backbone入门
Backbone入门讲解 Backbone是一个实现了web前端mvc模式的js框架. 一种解决问题的通用方法,我们叫做模式. 设计模式:工厂模式,适配器模式,观察者模式等,推荐js设计模式这本书.设 ...
- PAT 1006. Sign In and Sign Out
#include<iostream> #include<string> using namespace std; int main(){ int cnt;cin>> ...
- MvcPager分页控件以适用Bootstrap
随笔- 9 文章- 0 评论- 33 修改MvcPager分页控件以适用Bootstrap 效果(含英文版,可下载) 软件开发分页效果必不可少,对于Asp.Net MVC 而言,MvcPag ...
- Windows下Oracle不显示中文[已解决]
跟着视频学习,然后讲到插入的时候有中文性别,就GG了,该显示中文的时候都是问号,觉得应该是编码的问题. 于是上网找了下,测试可行,方法如下 1,查询Oracle编码的语句: [sql] SELECT ...