zoukankan      html  css  js  c++  java
  • SQLite 使用详解

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    1. 继承SQLiteOpenHelper 创建数据库,数据表
    2. 插入数据库数据
    3. 删除数据库数据
    4. 查询数据库数据
    5. 修改数据库数据
    6. 数据库使用案例

    Android 提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用 ContentProvider对外提供接口。SQLite 轻量级数据库使用方法如下:

    1. 继承SQLiteOpenHelper 创建数据库,数据表

    创建数据库表

    1. 语法

    创建数据表语法 如下:

    创建数据表语法

    2. 举例

    举例 如下:

    举例

    3.继承SQLiteDBHelper的创建数据库、数据表

    创建数据库、数据表 方法如下:

    创建数据库、数据表

    4.删除数据库表

    删除数据库表方法如下:

    DROP TABLE IF EXITS TABLE_NAME;
    

    2. 插入数据库数据

    插入数据方法一

    1. 语法
    INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
    VALUES (value1, value2, value3,...valueN);
    
    1. 举例
    INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (1, 'Paul', 32, 'California', 20000.00 );
    

    插入数据方法二

    1. 语法
    INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
    
    1. 举例
    INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
    

    Android 封装insert()插入数据方法三

    1.语法

    insert(String table, String nullColumnHack, ContentValues values)
    

    2.举例

    private SQLiteDatabase db;
    db.insert(SQLiteDBHelper.TABLE_NAME, null, values);
    

    3. 删除数据库数据

    删除数据库数据方法一

    1.语法

    DELETE FROM table_name 
    WHERE [condition];
    

    2.举例

    DELETE FROM COMPANY WHERE ID = 7;
    

    2.Android封装删除数据库数据方法二

    1.语法

    delete(String table, String whereClause, String[] whereArgs)
    

    举例

    private SQLiteDatabase db;
    db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
    				new String[] { "Jack" });
    

    4. 查询数据库数据

    查询数据库方法一

    1.语法

    SELECT column1, column2, columnN FROM table_name;
    

    查询表中所有数据的方法

    SELECT * FROM table_name;
    

    2.举例

    //1.查询指定的列
    SELECT ID, NAME, SALARY FROM COMPANY;
    // 2.查询表中所有内容
    SELECT * FROM COMPANY;
    

    Android 封装查询数据库方法二

    1.语法

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

    2.举例

    private SQLiteDatabase db;
    Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
    				null, null, null);
    

    5. 修改数据库数据

    修改数据库方法一

    1.语法

    UPDATE table_name
    SET column1 = value1, column2 = value2...., columnN = valueN
    WHERE [condition];
    

    2.举例

    UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;
    

    Android update 封装修改数据库方法二

    1.语法

    update(String table, ContentValues values, String whereClause, String[] whereArgs)
    

    2.举例

    db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
    				new String[] { "J" });
    

    6. 数据库使用案例

    • 实现效果

    数据库增删改查

    创建数据库

    创建数据库 方法如下:

    public class SQLiteDBHelper extends SQLiteOpenHelper {
    	public static String DB_NAME = "person.db";
    	// version 必须大于1
    	public static int DB_VERSION = 1;
    	public static String TABLE_NAME = "person";
    	public static String _ID = "_id";
    	public static String NAME = "name";
    	public static String NICK_NAME = "nickname";
    
    	public SQLiteDBHelper(Context context, String name, CursorFactory factory,
    			int version) {
    		super(context, name, factory, version);
    		// TODO Auto-generated constructor stub
    	}
    
    	public SQLiteDBHelper(Context context) {
    		super(context, DB_NAME, null, DB_VERSION);
    	}
    
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    
    		// SQLite 数据库中,字段一般不区分类型,但是主键除外,主键必须是整型
    		String sql = "CREATE TABLE " + TABLE_NAME + "(" + _ID
    				+ " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" + "," + NAME
    				+ " CHAR(10)," + NICK_NAME + " CHAR(10))";
    		db.execSQL(sql);
    	}
    
    	// 数据库升级的处理方法,
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
    		if (newVersion > oldVersion) {
    			// 删除老的数据表,创建新表
    			String dropsql = "DROP TABLE IF EXITS " + TABLE_NAME;
    			db.execSQL(dropsql);
    			onCreate(db);
    		}
    	}
    
    }
    

    数据库增加数据方法实现

    数据库增加数据方法实现代码如下:

    	//
    	public void InsertSQL(View view) {
    
    		InstertDB();
    		QueryDB();
    	}
    
    	/**
    	 * 插入数据处理方法
    	 */
    	private void InstertDB() {
    		ContentValues values = new ContentValues();
    		values.put("name", "Jack");
    		values.put("nickname", "J");
    
    		// 返回值:最近插入的那一行的行号
    		long result = db.insert(SQLiteDBHelper.TABLE_NAME, null, values);
    		if (result > 0) {
    			Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT)
    					.show();
    		} else {
    			Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT)
    					.show();
    		}
    	}
    

    数据库删除内容方法实现

    数据库删除内容方法实现代码如下:

    	/**
    	 * 删除数据
    	 */
    	private void DeleteDb() {
    		int result = db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
    				new String[] { "Jack" });
    		if (result > 0) {
    			Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_SHORT)
    					.show();
    		} else {
    			Toast.makeText(getApplicationContext(), "无Jack", Toast.LENGTH_SHORT)
    					.show();
    		}
    	}
    
    

    数据库修改内容方法实现

    数据库修改内容方法实现代码如下:

    	/**
    	 * 修改数据
    	 */
    	private void UpdateDb() {
    		// update person set name="Kitty" where nickname="J"
    		ContentValues values = new ContentValues();
    		values.put("name", "Lucy");
    
    		int result = db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
    				new String[] { "J" });
    
    		if (result > 0) {
    			QueryDB();
    		}
    	}
    

    数据库查询方法实现

    数据库查询方法实现代码如下:

    	/**
    	 * 查询数据处理方法
    	 */
    	private void QueryDB() {
    		// Select * from person where name= ?
    		// db.rawQuery(s)
    		// cursor 游标--》 结果集合
    		// 当使用SimpleCusorAdapter 时候,cursor 这个记过里面 必须包含“_id”,这个字段
    		// Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, "name=?",
    		// new String[] { "Jack" }, null, null, null);
    		Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
    				null, null, null);
    
    		while (cursor.moveToNext()) {
    
    			String name = cursor.getString(cursor.getColumnIndex("name"));
    			String nickname = cursor.getString(cursor
    					.getColumnIndex("nickname"));
    		}
    		// 将一个新的cusor跟原有的custor 交换
    		adapter.swapCursor(cursor);
    		adapter.notifyDataSetChanged();
    	}
    
    • 布局如下
    <?xml version="1.0" encoding="utf-8"?>
    <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" >
        <Button
            android:id="@+id/insertdata"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="InsertSQL"
            android:text="增加数据" />
        <Button
            android:id="@+id/deletedata"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="DeleteSQL"
            android:text="删除数据" />
        <Button
            android:id="@+id/quarydata"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="QuarySQL"
            android:text="查询数据" />
        <Button
            android:id="@+id/modifydata"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="ModifySQL"
            android:text="修改数据" />
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    
    • ListView item布局如下
    <?xml version="1.0" encoding="utf-8"?>
    <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="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:padding="10dp" >
    
        <TextView
            android:id="@+id/name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="name" />
    
        <TextView
            android:id="@+id/nickname"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="nickname" />
    
    </LinearLayout>
    

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(42)-工作流设计-表建立
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(41)-组织架构
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(39)-在线人数统计探讨
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(38)-Easyui-accordion+tree漂亮的菜单导航
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
    .Net 转战 Android 4.4 日常笔记(10)--PullToRefresh下拉刷新使用
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11310889.html
Copyright © 2011-2022 走看看