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数据库操作 (原始操作)的更多相关文章

  1. Android下的SQLite数据库的相关操作及AndroidTestCase测试

    一:创建数据库 package com.itcode.mysqlite; import android.content.Context; import android.database.sqlite. ...

  2. 安卓基础之Sqlite数据库最最基础操作

    Sqlite数据库基础操作 摘要:在应用中新建一个数据库,并创建一个数据表写入数据,然后读取表中数据并展示. 主要逻辑: 1.通过继承SQLiteOpenHelper自定义类,定制数据库的表结构,初始 ...

  3. sqlite数据库之简单操作

    一 sqlite介绍 Sqlite是一种嵌入式数据库,类似于一个文件系统,是跟程序在一起的.跟mysql等数据库程序跟数据分离是不一样的. 应用场景:常用于保存本地配置,类似于本地文件系统,因此他内嵌 ...

  4. android——SQLite数据库存储(操作)

    public class MyDatabaseHelper extends SQLiteOpenHelper { //把定义SQL建表语句成字符串常量 //图书的详细信息 //ID.作者.价格.页数. ...

  5. C# SQLite 数据库操作

    C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQL ...

  6. Android数据读取之Sqlite数据库操作

    咱们书接上文,继续来说说Android数据读取,这回,我们要讲的是Sqlite数据库的相关操作.以一个实例开始吧: 首先,上图,看看做成后的效果: 大概描述:类似于浏览器的收藏夹,网站名称,网站地址, ...

  7. [Swift通天遁地]七、数据与安全-(5)高效操作SQLite数据库

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. Electron中使用sql.js操作SQLite数据库

    推荐sql.js——一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...

  9. Android SQLite数据库

    SQLite数据库 SQLiteDatabase //管理操作数据库    管理    openDatabase //打开    openOrCreateDatabase //打开或创建    操作 ...

随机推荐

  1. Poj 3517 And Then There Was One Joseph核心问题

    基本上纯Joseph核心问题,只是第一步多一件.m. 然后你就可以用获得的递推公式: Win(n) 代表n当个人的中奖号码, 然后,Win(n)必须相等Win(n-1).当一个人将在下一次删除队列. ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...

  3. BNUOJ 34981 A Matrix

    BNUOJ 34981 A Matrix 题目地址:pid=34981" style="color:rgb(0,136,204); text-decoration:none&quo ...

  4. Oracle表空间及分区表

    (1) 表空间及分区表的概念表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应 ...

  5. 处理器(CPU)调度问题

     因为处理器是最重要的计算机资源,提高利用率并提高系统性能的处理器(吞吐量.响应时间).于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之中的一个. 一.处理机调度的层次 1. ...

  6. javascript系列之核心知识点(二)

    变量对象       变量对象是一个与执行上下文相关联的容器.它是一个和上下文密切结合的特殊对象,含有定义在上下文中的变量和函数声明.注意,函数表达式(和函数声明不同的)不包含在变量对象中. 变量对象 ...

  7. 冒泡排序与简单选择排序——Java实现

    1.冒泡排序 1)原理说明:反复遍历要排序的数列,一次比較两个元素,假设他们的顺序错误就把他们交换过来.走訪数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完毕. 2)代码实现: pa ...

  8. JS常用的标准函数

    原文:JS常用的标准函数 1.Array类型函数 array.concat(item...) 函数功能:关联数组,实现数组相加功能,但并不影响原先数组,concat返回新数组. array.join( ...

  9. springMVC 获取本地项目路径 及后整理上传文件的方法

    String path=request.getSession().getServletContext().getRealPath("upload/img/product"); // ...

  10. BZOJ 1208 HNOI2004 宠物收容所 平衡树/set

    标题效果:有一个宠物收容所.目前还没有被采纳的宠物或谁想要领养宠物,每个宠物有个性值,大家谁想要领养宠物具有理想人格值.每一刻,宠物收容所只是为了有谁想要领养宠物或宠物的人. 当领走宠物,将有一定程度 ...