Android学习笔记(SQLite的简单使用)

1.SQLite介绍

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了

2.SQLiteOpenHelper的使用方法

常用方法
    1.getReadableDatabase():得到可读的数据库,返回一个SQLiteDatabase对象,提供一些管理数据库的方法
    2.getWritableDatabase():得到一个可写的数据库,返回一个SQLiteDataba
    3.onCreate(SQLiteDatabase db):创建一个表
    4.onOpen(SQLiteDatabase db):打开数据库
    5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改数据库的表结构的方法
    6.close()
    当需要操作数据库的时候,必须先获得一个SQLiteOpenHelper,他是一个抽象类,我们必须写一个类,来继承他,继承之后,我们拥有了getReadableDatabase和getWritableDatabase两个方法,

3.使用adb访问SQLite

进入adb命令行,查询数据库表,和普通的sql语句完全一样(select * from user)

Adb为调试工具,进入命令行 /data/data 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成

当点击创建数据库之后,会生成如下文件夹

进入Databases

链接数据库实例

4.SQLite实现增删改查的Demo

布局代码(线性水平布局,五个按钮)

<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="com.example.sqlitedemo.MainActivity" >

    <Button
        android:id="@+id/createBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="创建数据库"/>

    <Button
        android:id="@+id/updateBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="更新数据库"/>

    <Button
        android:id="@+id/insertDataBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入数据"/>

    <Button
        android:id="@+id/updateDataBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="更新数据"/>

    <Button
        android:id="@+id/queryDataBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询数据"/>
</LinearLayout>

数据库工具类代码

package com.example.sqlitedemo.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{

    private static final int VERSION = 1;
    /**
     * 在sqliteOpenHelper子类中必须有该构造函数,
     * 第一个参数为activity
     * 第二个参数:表的名字
     * 第三个函数:null
     * 第四个参数:数据库的版本
     */

    public DatabaseHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    /**
     * 构造函数2
     * @param context
     * @param name
     */
    public  DatabaseHelper(Context context, String name) {
        // TODO Auto-generated constructor stub
        this(context, name, VERSION);
    }

    /**
     * 构造函数3
     * @param context
     * @param name
     * @param version
     */
    public  DatabaseHelper(Context context, String name,int version) {
        // TODO Auto-generated constructor stub
        this(context, name, null, version);
    }

    /**
     * 该函数在第一次创建数据库的时候执行,第一次得到SQLiteDatabase对象的时候,调用次方法
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        System.out.println("创建数据库");
        String strCreateSQL = "create table user(id int,name varchar(20))";
        db.execSQL(strCreateSQL);
    }

    /**
     * 执行更新数据库
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        System.out.println("更新数据库");
    }

}

数据库操作类代码

package com.example.sqlitedemo;

import com.example.sqlitedemo.db.DatabaseHelper;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Button createBtn;
    private Button updateBtn;
    private Button insertDataBtn;
    private Button updateDataBtn;
    private Button queryDataBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createBtn = (Button) findViewById(R.id.createBtn);
        updateBtn = (Button) findViewById(R.id.updateBtn);
        insertDataBtn = (Button) findViewById(R.id.insertDataBtn);
        updateDataBtn = (Button) findViewById(R.id.updateDataBtn);
        queryDataBtn = (Button) findViewById(R.id.queryDataBtn);

        createBtn.setOnClickListener(new createListener());
        updateBtn.setOnClickListener(new updateListener());
        insertDataBtn.setOnClickListener(new insertDataListener());
        updateDataBtn.setOnClickListener(new updateDataListener());
        queryDataBtn.setOnClickListener(new queryDataListener());
    }

    class createListener implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl");
            SQLiteDatabase  db = dbHelper.getWritableDatabase();

        }
    }

    class updateListener  implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //更改数据库实力的版本。默认就会执行onUpgrade方法
            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
            SQLiteDatabase  db = dbHelper.getWritableDatabase();
        }

    }

    class insertDataListener  implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //生成一个数据库写入时存放数据的对象,键为列名,值为值
            ContentValues values = new ContentValues();
            values.put("id", 1);
            values.put("name", "mzl");

            //更改数据库实力的版本。默认就会执行onUpgrade方法
            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
            SQLiteDatabase  db = dbHelper.getWritableDatabase();
            db.insert("user", null, values);
            Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show();
        }

    }

    class updateDataListener  implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            ContentValues values = new ContentValues();
            values.put("name", "mzl修改");
            //更改数据库实力的版本。默认就会执行onUpgrade方法
            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
            SQLiteDatabase  db = dbHelper.getWritableDatabase();
            db.update("user", values, "id=?", new String[]{"1"});
            Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
        }

    }

    class queryDataListener  implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //更改数据库实力的版本。默认就会执行onUpgrade方法
            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
            SQLiteDatabase  db = dbHelper.getReadableDatabase();
            Cursor  cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
            while(cursor.moveToNext()){
                String name = cursor.getString(cursor.getColumnIndex("name"));
                Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
            }
        }

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
时间: 2024-10-09 21:29:58

Android学习笔记(SQLite的简单使用)的相关文章

Android学习笔记--Sqlite数据库

前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了.让我比较惊讶的是Android中竟然内嵌了一个轻量型的数据库SQLite数据库,使得本地的数据持久化有了一个质的飞跃. 通过前两天上课听老师讲解,和课下自己看书总结,想在博客上把自己对于SQLite数据库的理解做一下总结,也是方便之后的复习.Android为了让我们能够更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,这个

Android学习笔记--TabLayout的简单使用

我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到很漂亮的效果.但是TabPageIndicator是第三方的,而且比较老了,当然了现在很多大神都已经开始自己写TabPageIndicator来满足自己的需求,在2015年的google大会上,google发布了新的Android Support Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容

Android学习笔记:ListView简单实用--显示文字列表

在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例子,所以固定写死 items.add("item1"); items.add("item2"); items.add("item3"); ListView listView = (ListView) findViewById(R.id.listVie

Android学习笔记——创建一个简单的上下文菜单ContextMenu

例子目标: 在一个显示出来的内容区域内,触摸屏幕显示一个上下文菜单,并且实现监听,当选择菜单项的时候,获得用户选择的项的内容. 实现原理: 1.向内容Activity中的需要显示上下文菜单的内容区域注册上下文菜单响应 2.设计上下文菜单样式 3.在Activity中实现上下文菜单的方法 代码: 上下文菜单的XML内容 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="ht

Android学习笔记-SQLite的使用

界面文件activity_main.xml     <Button          android:id="@+id/createButton"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_below="@id/hello_world"    

Android学习笔记——SQLite

该工程的功能是实现关于数据库的操作,即creat.update.insert.query.delete 调试的时候请用模拟器,用真机调试的时候进入cmd-adb shell,再进入cd data/data的时候会显示permission denied 以下的代码是MainActivity.java中的代码 package com.example.sqlite; import com.example.sqlite.db.DataBaseHelper; import android.app.Acti

Android学习笔记(四一):SQLite的使用

SQLite是非常流行的嵌入式关系型数据库,轻载,速度快,而且是开源.在Android中,runtime提供SQLite,所以我们可以使用SQLite,而且是全集的SQLite.SQLite提供SQL接口,和一般的数据库一样.但是Android的API不采用JDBC,JDBC消耗太多的资源. SQLite支持绝大部分SQL-92标准,不支持:FOREIGN KEY constraints, nested transactions, RIGHT OUTER JOIN, FULL OUTER JOI

Android学习笔记(四二):SQLite、ListView、ContextMenu

继续上一个例子,结合ListView中对SQLite进行操作. 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出.在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{    private SQLiteDatabase  db = nu

Android学习笔记(二十):回归简单的ListView

在之前连续对ListVew作了逐步深入的探讨,对于手持屏幕来讲,其实可以比较简单,如果别人愿意付钱,不在乎将代码再些一次,这是客户端的开发和复杂服务器的开发不同的地方.当然各人有各人的看法.绝大部分情况下,一个list元素可能左右各有一个widget就差不多,回归简约风格,这也是小尺寸屏幕和手指操作的特点. 在数据的传递,Java里面,具有<Key,Value>的Hash是非常重要的,可以方便增/删/改/查,如果我们不使用数据库存储,或者将数据存放在内存中,<Key,Value>是

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri