- 浏览: 499824 次
- 性别:
- 来自: 福州
文章分类
- 全部博客 (165)
- iphone (2)
- android (13)
- 设计模式 (8)
- ND实习小记之Android (63)
- mac使用技巧 (1)
- window phone (1)
- 错误总结 (2)
- 开发记录 (6)
- Android控件常用属性 (7)
- 代码管理工具 (5)
- 黑莓开发 (2)
- Eclipse (9)
- Android实践项目 (6)
- 常用布局 (1)
- 自定义Widget (5)
- adapter (2)
- OsChina Android客户端研究 (1)
- android之我见 (4)
- Java相关 (1)
- 存储 (1)
- 调试 (1)
- NDK相关 (2)
- App Components (7)
- Android_提醒 (2)
- Android_存储 (0)
- Android_线程 (3)
- Android控件使用实例 (5)
- 键盘相关 (1)
- android之我见,源码 (1)
最新评论
-
xy_feng_zhi_chao:
多谢楼主分享
Android中使用styles -
michaelye1988:
soldier93 写道无关素质,我只发表自己的看法!既然你发 ...
如何在window上把你的项目提交到github -
soldier93:
无关素质,我只发表自己的看法!既然你发表了博客我就有权对其评价 ...
如何在window上把你的项目提交到github -
michaelye1988:
soldier93 写道laji 素质真低
如何在window上把你的项目提交到github -
soldier93:
laji
如何在window上把你的项目提交到github
1.在程序中如何使用自定义的数据库
在程序外部获取到数据库以后,将这个数据库放到res/raw目录下。如果数据库过大,可以考虑将数据库的后缀名改为.jpg这样做的目的是系统会帮你压缩这个数据库。
当第一次打开应用程序的时候,数据库会被加载到data/data目录下。这个需要在模拟器环境下才可以看到。在测试的时候,可以检查该目录下是否成功生成数据库。也可以在DDMS里面把数据库取出来,使用SqliteDev来查看表结构等等。
需要在程序中执行一些数据库操作的时候,可以先在SqliteDev里面用sql语句进行测试。如果成功执行了,再写到代码里面。这样效率会比较高。
public class DataBaseHelper extends SQLiteOpenHelper { public final static String DB_NAME = "telloc.db"; public DataBaseHelper(Context context, String dbName)//使用自定义的构造器 { super(context, dbName, null, 3); // 先执行 判断 数据库文件是否存在, 不存在则从本地文件拷贝至数据库位置 CopyDB(context, false); } /** * 第一次执行程序的时候,判断是否存在数据库,不存在就加入 * * */ @Override public void onCreate(SQLiteDatabase db) { } /** * 数据库版本号发生变化的时候被调用,更新数据库和数据库版本号 * * */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } /** * 复制数据库, 不存在或者强制要求覆盖时覆盖 * * @param isCover */ public static void CopyDB(Context context, boolean willCover) { System.out.println("CopyDB" + context); File path = context.getDatabasePath(DB_NAME); if (!path.exists()) { // 首先要创建这个文件夹, 如果不存在的话。。。 否则FileOutputStream(path) 报错 new File(path.toString().substring(0, path.toString().lastIndexOf("/"))).mkdirs(); } else if (!willCover) { return; } InputStream is = context.getResources().openRawResource(R.raw.telloc); FileOutputStream fos; try { fos = new FileOutputStream(path); byte[] buffer = new byte[1024]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); // Log.e(TAG, "create new database"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
使用
helper = new DataBaseHelper(myContext, DataBaseHelper.DB_NAME);
String areaCity = ""; Cursor cursor = helper.getReadableDatabase().query( "area_code", //表名 new String[]{"area_code", "city"}, //字段名 "area_code = ? or area_code = ?", //查询前面3位或者4位 new String[]{myNumber.substring(0, 3), myNumber.substring(0, 4)}, null, null, null); if(cursor.getCount() == 0) { areaCity = ""; } else//有查询出记录,取第一条 { if(cursor.moveToFirst()) { areaCity = cursor.getString(cursor.getColumnIndex("city")); } } cursor.close();//使用后记得关闭 return areaCity;
3.创建自己的数据库
String sqlForCreateTable = "CREATE TABLE [my_calls]("+" [_id]INTEGER, "+" [number]INTEGER, "+" [date]INTEGER, "+" [duration]INTEGER, "+" [type]INTEGER, "+" [name]VARCHAR(50), "+" [tel_location]VARCHAR(100))"; Log.e("sqlForCreateTable", sqlForCreateTable); db.execSQL(sqlForCreateTable);
4.查找系统数据库中的字段,添加到自己的数据库
Cursor cursor = myContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls._ID, CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.DURATION, CallLog.Calls.TYPE, CallLog.Calls.CACHED_NAME}, null, null, null); if(cursor != null)//获取查询出来的记录,添加到自己的表中 { Log.e("cursorCount", "cursor:"+cursor.getCount()); while(cursor.moveToNext()) { ContentValues cv = new ContentValues();//类似于键值对的方式保存数据 cv.put("_id", cursor.getString(cursor.getColumnIndex(CallLog.Calls._ID))); String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)); cv.put("number", number); cv.put("date", cursor.getString(cursor.getColumnIndex(CallLog.Calls.DATE))); cv.put("duration", cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION))); cv.put("type", cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE))); cv.put("name", cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME))); cv.put("number", cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER))); cv.put("tel_location", getTelLocation(db,number)); db.insert(TABLE_NAME, null, cv); } } cursor.close();
总结:
操作系统的数据库的时候,系统已经将这个操作封装为providor,可以直接使用例如:
myContext.getContentResolver().query(.......);
而操作自己的数据库的时候,需要new一个数据库对象,例如:
helper.getReadableDatabase().query(........);
操作后返回的是一个Cursor对象。这个对象对象包含了查询出来的结果
一般需要对这个cursor中的对象进行读取。注意读取后要关闭这个对象。
发表评论
-
工程导入出错
2012-06-28 12:10 969经常导入工程的时候会发现sdk jar包没有导入 一般的做法 ... -
android 中dip sp的使用
2012-06-13 14:53 1027Historically, programmers alway ... -
按钮点击效果 父控件 响应事件
2012-06-06 15:05 3546tv.setClickable(false); tv.set ... -
view 播放动画
2012-05-22 14:11 9501.首先可以使用EasyGifAnimator,将gif ... -
短信中加入表情
2012-05-17 15:54 1224/** * 来自博客:http://gundumw1 ... -
通讯录相关
2012-05-08 20:56 16391.查看所有联系人信息 ContentResolver c ... -
横向 纵向结合的ScrollView
2012-05-08 11:46 2693就是HorizontalScrollView和ScrollVi ... -
让view弹出菜单 onCreateContextMenu
2012-05-08 10:27 2525Button btn = (Button)findViewBy ... -
设置动画效果
2012-05-07 17:44 10221.动画文件layout_animation_row_left ... -
布局文件绘制圆角矩形 背景图片
2012-04-25 16:29 7032<?xml version="1.0&q ... -
ListView getView生成Item
2012-04-19 18:11 1553很简单的啦: public class Generat ... -
代码生成控件和布局
2012-04-18 18:15 1255最简单的,存在布局文件的时候: @Override ... -
添加jar包到项目中去
2012-04-18 10:41 1125先在项目中新建一个名为“lib”的文件夹 将你的 ... -
监听按钮(软键盘和物理按钮)
2012-04-12 20:51 1175本人测试的 可以监听到软键盘的回车按钮 以及手机的物理按钮 ... -
Android View.startAnimation()动画
2012-04-12 20:05 192321. Animation animation = ... -
获得View的大小
2012-04-09 20:17 1032在onCreate()中 mapView.post(ne ... -
让ListView回到原来的位置
2012-04-06 15:17 1766当从ListView中的某一个Item跳转到其他的Activi ... -
StartActivityForResult实现确认对话框
2012-04-06 11:46 25991. llDelete.setOnClickListener ... -
屏蔽返回键
2012-04-01 19:42 982/** * 屏蔽用户的返回键, ... -
调用系统发送邮件,短信,拨打电话,浏览器
2012-04-01 15:07 15581.发送邮件 /** * 调用这个方法,发送邮 ...
相关推荐
Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...
这是一个使用C#开发的Sqlite数据库创建、操作的源码工程,关于Sqlite的所有操作已经单独创建了专门的跨平台【.NETCore3.1】类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发...
在`sqlitDemo`项目中,你可能可以找到一个简单的SQLite数据库操作示例,包括创建数据库、表格,以及插入、查询、更新和删除数据等操作。通过研究这个示例,你可以更好地理解如何在实际的iOS应用中使用SQLite数据库。
总结起来,Qt的SQLite数据库操作封装涉及到以下几个关键点: 1. 生成和打开数据库文件。 2. 执行SQL语句,包括查询、插入、更新和删除。 3. 设计接口,提供增删改查的重载功能。 4. 实现事务管理,确保数据一致性。 ...
SQLite数据库是一种轻量级、自包含的SQL数据库引擎,常被用在嵌入式系统和移动应用中。在处理敏感数据时,为了保护信息安全,对SQLite数据库进行加密是必要的步骤。本文将详细介绍如何使用.NET环境下的SQLite加密...
在VB6.0中操作SQLite数据库,是一种将轻量级、高性能的SQLite数据库与传统的Visual Basic编程环境相结合的方法。SQLite是一种自包含、无服务器、零配置、事务性的SQL数据库引擎,广泛应用于移动设备、嵌入式系统以及...
使用C++操作sqlite数据库需要具备相关的环境和依赖项,然后按照一定的步骤来新建数据库和表、插入数据、修改和删除数据。在使用C++操作sqlite数据库时,需要注意一些重要的细节,以确保数据的安全和正确性。
在Android开发中,SQLite数据库是默认的轻量级数据库,用于存储应用的数据。SQLite支持标准的关系型数据库特性,如SQL语法、事务处理等,且它体积小、无服务器、文件化,非常适合移动设备使用。本篇文章将深入探讨...
这款Delphi工具则提供了更加便捷的方式来操作SQLite数据库,尤其对于那些使用Delphi进行开发的项目。 首先,该工具的一大亮点是支持查询加密的SQLite数据库。这意味着用户可以对存储的数据进行安全保护,防止未经...
在JavaScript中操作SQLite数据库,我们可以利用Web SQL API,这是一个已弃用但仍在一些旧版浏览器中可用的API。虽然它不被推荐用于新项目,但这个Demo仍然可以作为理解客户端数据库操作的基础。 首先,你需要创建一...
在VB 6.0中操作SQLite数据库涉及到一系列的步骤和技术,包括连接数据库、执行SQL语句(查询、添加、更新和删除数据)以及处理结果。SQLite是一个轻量级的、自包含的数据库引擎,适用于各种应用程序,特别是那些需要...
在SQLite数据库逆向分析中,Main函数将负责加载数据库、初始化数据库环境和准备数据库操作。 3. 从软件外部调用函数 在SQLite数据库逆向分析中,我们需要从软件外部调用函数,以获取数据库的操作权限和控制权。...
本文将深入探讨如何使用JavaScript访问SQLite数据库,以及相关的关键知识点。 首先,JavaScript直接在浏览器环境中并不能直接操作SQLite数据库,因为浏览器的安全沙箱机制不允许。然而,通过一些特定的技术,如Web ...
SQLite是一款轻量级的、开源的、自包含的SQL数据库...了解如何创建数据库、操作表、执行查询以及管理事务,这些都是使用SQLite数据库的基础。通过学习和实践,你将能够更好地利用SQLite这一强大而灵活的数据库系统。
SQLite数据库操作工具使得用户能够方便地管理和操作SQLite数据库,进行数据的增删改查等操作,而无需深入了解复杂的SQL语法或数据库管理系统。 SQLite Studio是一款非常实用的SQLite数据库管理工具,它提供了一个...
总之,`SQLiteDao`类是C#中对SQLite数据库操作的抽象封装,它使得数据库操作更加简洁、安全且易于维护。通过结合其他辅助类,如扩展方法和加密工具,我们可以构建一个强大而全面的数据库操作框架,满足各种项目需求...
本文实例讲述了C#操作SQLite数据库之读写数据库的方法。分享给大家供大家参考,具体如下: 这里演示读写数据库并在窗体(Form)中显示其数据,其方式为: 读: Database(SQLite) -> DataAdapter -> DataSet -> ...
BCB6.0 使用 sqlite 数据库简单方法, 工程--添加到工程---选择 .c类型 添加 sqlite3.c再引入头文件 #include "sqlite3.h"。例程可以帮助新学SQLite入门。
SQLite数据库GUI操作界面是一种用户友好的图形用户界面(GUI),它允许用户以直观的方式与SQLite数据库进行交互,而无需编写SQL命令行语句。这种工具极大地简化了数据库管理任务,尤其适合初学者和非程序员。在本文...