Android 数据存储——SQLite实例、判断数据库中表是否存在

本文主要记录一下Android SQLiteDatabase中如何判断数据库中表是否存在,以及测试SQLiteDatabase数据库的基本操作。有关SQLite的详细说明,可以查看转载的Android 数据存储——SQLite使用详解

例子

AndroidManifest.xml——没有做任何修改,创建工程默认

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wxl.handlerthread"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.wxl.handlerthread.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.java

package com.example.sqlite;

import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MainActivity extends Activity {
	private SQLiteDatabase db1;
//	private SQLiteDatabase db2;
	private MyDatabaseUtil myDatabaseUtil;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //参数二是数据库文件名
        myDatabaseUtil = new MyDatabaseUtil(this, "db1.db", null, 1);

        db1 = this.openOrCreateDatabase("db1.db", Context.MODE_PRIVATE, null);
        /*/data/data/com.example.sqlite/databases必须存在,否则创建出错,最后是databases而不是database,不要忘了加's'*/
//        db2 = SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.sqlite/databases/db2.db3",null);

        /*创建表,并判断是否已经存在此表,没创建,则创建并初始化*/
        if (!myDatabaseUtil.tabIsExist("person")) {
        	db1.execSQL("CREATE TABLE person (_id integer primary key autoincrement, name varchar(20))");
        	ContentValues values =new ContentValues();
            for(int i=0;i<10;i++){
                    values.put("name", "name "+ i);
                   db1.insert("person", "_id", values);
            }
        }else {
        	Log.i("+++++++++++", "已经创建了,无需再创建");
        }

        /*更新数据库*/
        ContentValues values =new ContentValues();
        values.put("name", "wxl");
        db1.update("person", values, "_id=1", null);
        db1.update("person", values, "_id=?", new String[]{"5"});

        /*查询数据*/
        Cursor c = db1.query("person", null, null, null, null, null, null);
        c.moveToFirst();
	    while(!c.isAfterLast()){
	    	int index = c.getColumnIndex("name");
	        Log.d("SQLite", c.getString(index));
	        c.moveToNext();
	    }

	    c = db1.rawQuery("select * from person", null);
	    c.moveToFirst();
	    while(!c.isAfterLast()){
	    	int index = c.getColumnIndex("name");
	        Log.d("SQLite", c.getString(index));
	        c.moveToNext();
	    }

    }

    public class MyDatabaseUtil extends SQLiteOpenHelper{

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

		@Override
		public void onCreate(SQLiteDatabase arg0) {
			// TODO Auto-generated method stub
		}

		@Override
		public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
			// TODO Auto-generated method stub
		}

		/**
         * 判断某张表是否存在
         * @param tabName 表名
         * @return
         */
        public boolean tabIsExist(String tabName){
                boolean result = false;
                if(tabName == null){
                        return false;
                }
                SQLiteDatabase db = null;
                Cursor cursor = null;
                try {
                        db = this.getReadableDatabase();//此this是继承SQLiteOpenHelper类得到的
                        String sql = "select count(*) as c from sqlite_master where type ='table' and name ='"+tabName.trim()+"' ";
                        cursor = db.rawQuery(sql, null);
                        if(cursor.moveToNext()){
                                int count = cursor.getInt(0);
                                if(count>0){
                                        result = true;
                                }
                        }

                } catch (Exception e) {
                        // TODO: handle exception
                }
                return result;
        }

    }

}

其中getReadableDatabase()方法是SQLiteOpenHelper类中的

创建表并初始化得到的表数据如下

更新数据得到的表数据

查询数据表的数据显示结果如下

时间: 2024-10-15 15:09:36

Android 数据存储——SQLite实例、判断数据库中表是否存在的相关文章

Android数据存储——SQLite数据库

本篇整合Android数据库的使用,以保存一个实体类为例子. 先来看下数据库语句: ORM:关系对象映射 增加数据: ContentValues values = new ContentValues(); values.put("name", "小丽"); values.put("phone", "110"); mDB.insert("student",//表名 null, //规避插入语句的错误 valu

Android数据存储 如何搞定SQLite Database

转载请注明出处:明桑Android 在Android平台下有各种不同方法可以实现应用程序数据的存储和管理(SharedPerferences,File,SQLiteDatabase,网络存储),方法的选择依赖于需要存储的数据类型和数据结构.SQLite数据库能够安全而有效地解决结构化数据的存储问题: 这里主要介绍SQLite相关的用法,以及对数据库常见操作的封装. 最后,作为一个综合案例,做一个简单的学生管理的demo,创建student.db,包括name,grade字段,实现增.删.改.查的

android数据存储_SQL数据库

源码下载(免下载积分):下载 对于保存重复或者结构化的数据数据,使用数据库很好的.在android对于数据库的API在 android.database.sqlite包中. 创建并操作数据库: 创建: 1. 继承SQLiteOpenHelper //继承SQLiteOpenHelper类, public class DictionaryOpenHelper extends SQLiteOpenHelper{ 2. 定义相关的成员变量和常量 public static final String D

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android 数据存储 利用SQLiteDatabase实现简单的学生管理

转载请注明出处:明桑Android 这是作为上一篇Android 数据存储 如何搞定SQLite Database的实例练习,之所以单独列出来是因为除了数据库方面的知识,还涉及其它方面的知识,所以就写的详细点,啰嗦点.希望对初学者有所帮助.当然这个Demo比较简单,有很多可以改进的地方,但那不是这里探讨的重点,重点学习如何将SQLiteDatabase数据绑定到我们的界面! 本文代码地址:UseSQLitDatabase 我们要做一个简单的学生管理的demo,创建student.db,包括nam

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

android 数据存储的几种方式

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理. 对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络.但从开发者的

10、Android数据存储

课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 深入研究SQLite3数据库特性,并且比对与大型数据库的包括存储过程,主外键关联等特性 了解文件存储的内外存储分别  了解网络存储C/S结构原理 . 重点难点:SQLiteOpenHelper类的使用   SQLIte数据库的特性掌握 考核目标: 说出Android数据存储的几种形式 ? Sqlite3能支