android应用程序里使用SQLite
2015-03-03 16:19
351 查看
一,创建一个数据库操作助手类DataBaseHelper,该类继承自SQLiteOpenHelper。
重点还是重写其 onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)两个方法。
代码如下:
二,如果android应用需要用户的注册与登陆,那么可以设计为在应用启动时,提示用户注册,这时可以在MainActivity里创建数据库,代码如下:
以上这种方式创建的数据库在手机的内存卡里,如果没有root权限,是看不到的。因此,如果能把数据库创建在SD卡上,将会很方便。那么,想要在SD卡上创建数据库,首先要进行的工作是判断SD是否存在,有如下判断
即判断android.os.Environment.MEDIA_MOUNTED常量(已经挂载并且拥有可读可写权限)是否等于android.os.Environment.getExternalStorageState();(该方法返回的是返回外部存储设备的当前状态),如果存在SD卡,则进行如下操作:
这里在SD卡上创建数据库的时候,给路径就好了 。因为SQLiteOpenHelper类中构造方法会建立数据库 。
pathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+”UserData”+File.separator+MainActivity.class.getPackage().getName();
以上得到的是数据库文件在SD卡上的完整路径,然后创建目录:
在加上数据库文件的名:dataBaseName=pathDataBase+File.separator+”pedometer.db”;
最后调用DataBaseHelper的构造方法在SD卡上穿件数据库:
这时,数据库文件已经在SD卡上创建好了。
以下是自己做的Demo的完整代码:
DataBaseHelper类:
MainActivity :
重点还是重写其 onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)两个方法。
代码如下:
[code]public class DataBaseHelper extends SQLiteOpenHelper { private static final int VERSION=1; public DataBaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO 自动生成的构造函数存根 } public DataBaseHelper(Context context, String name) { // TODO 自动生成的构造函数存根 this(context,name, VERSION); } public DataBaseHelper(Context context, String name,int version) { // TODO 自动生成的构造函数存根 this(context,name,null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { System.out.println("创建数据库"); db.execSQL("create table t_user(id integer,nick_name nvarchar(50),name nvarchar(50),sex char(2),email nvarchar(50),primary key (id))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("更新数据库"); } }
二,如果android应用需要用户的注册与登陆,那么可以设计为在应用启动时,提示用户注册,这时可以在MainActivity里创建数据库,代码如下:
[code]public class MainActivity extends FragmentActivity { private DataBaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper=new DataBaseHelper(MainActivity.this,"pedometer.db"); SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase(); } }
以上这种方式创建的数据库在手机的内存卡里,如果没有root权限,是看不到的。因此,如果能把数据库创建在SD卡上,将会很方便。那么,想要在SD卡上创建数据库,首先要进行的工作是判断SD是否存在,有如下判断
[code]if (!android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment .getExternalStorageState())) { Toast.makeText(MainActivity.this, "请插入SD卡,谢谢合作!", 1000).show(); } else { …… }
即判断android.os.Environment.MEDIA_MOUNTED常量(已经挂载并且拥有可读可写权限)是否等于android.os.Environment.getExternalStorageState();(该方法返回的是返回外部存储设备的当前状态),如果存在SD卡,则进行如下操作:
[code]else { spathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+"UserData"+File.separator+MainActivity.class.getPackage().getName(); File dataBaseFile=new File(pathDataBase); if(!dataBaseFile.exists()){ dataBaseFile.mkdirs(); } dataBaseName=pathDataBase+File.separator+"pedometer.db"; dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName); SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase(); Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();
这里在SD卡上创建数据库的时候,给路径就好了 。因为SQLiteOpenHelper类中构造方法会建立数据库 。
[code]private DataBaseHelper dbHelper; private String pathDataBase; //数据库文件的路径 private String dataBaseName; //数据库文件名
pathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+”UserData”+File.separator+MainActivity.class.getPackage().getName();
以上得到的是数据库文件在SD卡上的完整路径,然后创建目录:
[code] File dataBaseFile=new File(pathDataBase); if(!dataBaseFile.exists()){ dataBaseFile.mkdirs(); }
在加上数据库文件的名:dataBaseName=pathDataBase+File.separator+”pedometer.db”;
最后调用DataBaseHelper的构造方法在SD卡上穿件数据库:
[code]dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName); SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase(); Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();
这时,数据库文件已经在SD卡上创建好了。
以下是自己做的Demo的完整代码:
DataBaseHelper类:
[code]package com.pedometer.utils; 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; public DataBaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO 自动生成的构造函数存根 } public DataBaseHelper(Context context, String name) { // TODO 自动生成的构造函数存根 this(context,name, VERSION); } public DataBaseHelper(Context context, String name,int version) { // TODO 自动生成的构造函数存根 this(context,name,null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { System.out.println("创建数据库"); db.execSQL("create table t_user(id integer,nick_name nvarchar(50),name nvarchar(50),sex char(2),email nvarchar(50),primary key (id))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("更新数据库"); } }
MainActivity :
[code]package com.example.pedometer; import java.io.File; import com.pedometer.user.UserLoginFragment; import com.pedometer.utils.DataBaseHelper; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.view.Menu; import android.widget.Toast; public class MainActivity extends FragmentActivity { private DataBaseHelper dbHelper; private String pathDataBase; private String dataBaseName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (!(android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment .getExternalStorageState()))) { Toast.makeText(MainActivity.this, "请插入SD卡,谢谢合作!", 0).show(); } else { pathDataBase=Environment.getExternalStorageDirectory().getPath()+File.separator+"UserData"+File.separator+MainActivity.class.getPackage().getName(); File dataBaseFile=new File(pathDataBase); if(!dataBaseFile.exists()){ dataBaseFile.mkdirs(); } dataBaseName=pathDataBase+File.separator+"pedometer.db"; dbHelper = new DataBaseHelper(MainActivity.this, dataBaseName); SQLiteDatabase sqlitedatabase = dbHelper.getWritableDatabase(); Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show(); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if (fragment == null) { fragment = new UserLoginFragment(); fm.beginTransaction().add(R.id.fragmentContainer, fragment) .commit(); } } } }
相关文章推荐
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
- Android SQlite数据库的使用(三)-将数据库文件连同应用程序一起发布
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
- 正在使用的Android应用程序
- Android 开发中使用 SQLite 数据库
- Android 小项目之--SQLite 使用法门 (附源码)
- 自己在使用Android Maps API 开发地图应用程序时遇到的问题,以及解决的办法
- android:使用SQLite的Blob储存.mp3档案
- 在 Android 应用程序中使用 Internet 数据
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- SQLite3命令行使用查询android的telephone数据库
- 在Android上使用AutoNavi Map API开发自己的地图应用程序
- 在应用程序中使用SQLite和Enterprise Library
- Android中Sqlite使用初步
- Android 平台下的 SQLite 使用
- Android SQLiteOpenHelper的使用心得
- Android数据库(SQLiteDatabase)使用小结
- Android应用程序使用Google Map
- 在 Android 中使用 SQLite, ContentProvider
- 使用android.os.Debug类调试Android应用程序