Android数据库随同Android应用一同发布

本文介绍了一种在Android应用中预装SQLite数据库的方法。通过将数据库文件放置于res/raw目录下,首次启动应用时将其复制到指定目录,实现快速初始化数据库并进行数据查询。

实现方法:将Android数据库文件放到res/raw目录下,然后读取db文件,并且将其写到data/data/pkg_name/databases/目录下,获取SDCard中。

 1 package com.sqllite.activity;
 2 
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 
 9 import android.app.Activity;
10 import android.content.res.Resources;
11 import android.database.Cursor;
12 import android.database.sqlite.SQLiteDatabase;
13 import android.os.Bundle;
14 
15 public class SqlLiteActivity extends Activity {
16     private File file = null;
17     private File dir = null;
18 
19     @Override
20     public void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.main);
23 
24         // 第一次运行应用程序时,加载数据库到data/data/<pkg_name>/database/<db_name>
25         dir = new File("data/data/" + getPackageName() + "/databases");
26         if (!dir.exists() || !dir.isDirectory()) {
27             dir.mkdir();
28         }
29         file = new File(dir, "db.db3");
30 
31         if (!file.exists()) {
32             FileUtils.loadDbFile(R.raw.db, file, getResources(),
33                     getPackageName());
34         }
35 
36         // 读取数据库
37         
38         SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(file, null);
39         //SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
40         Cursor cursor = db.query("people"new String[] { "id""name""age""address" },
41                 nullnullnullnullnull);
42         
43         while(cursor.moveToNext()){
44             System.out.println(cursor.getInt(0));
45         }
46         cursor.close();
47     }
48 
49 }
50 
51 class FileUtils {
52 
53     public static void loadDbFile(int rawId, File file, Resources res,
54             String pkgname) {
55         InputStream dbInputStream = res.openRawResource(R.raw.db);
56         FileOutputStream fos = null;
57 
58         try {
59             fos = new FileOutputStream(file);
60 
61             byte[] bytes = new byte[1024];
62             int length;
63             while ((length = dbInputStream.read(bytes)) > 0) {
64                 fos.write(bytes, 0, length);
65             }
66 
67         } catch (FileNotFoundException e) {
68             // TODO Auto-generated catch block
69             e.printStackTrace();
70         } catch (IOException e) {
71             // TODO Auto-generated catch block
72             e.printStackTrace();
73         } finally {
74             try {
75                 fos.close();
76                 dbInputStream.close();
77             } catch (IOException e) {
78                 // TODO Auto-generated catch block
79                 e.printStackTrace();
80             }
81         }
82     }
83 }
转载自:http://www.cnblogs.com/cody1988/archive/2011/10/25/2224366.html

内容概要:本文档详细介绍了基于直驱永磁同步发电机(PMSG)的1.5MW风力发电系统在Simulink环境下的建模与仿真全过程,涵盖了风力机空气动力学模型、PMSG电磁特性建模、不可控整流与逆变电路、直流环节、空间矢量脉宽调制(SVPWM)技术以及核心控制策略的设计。重点实现了最大功率点跟踪(MPPT)控制以提升风能捕获效率,并构建了电压外环与电流内环协同工作的双闭环控制系统,通过仿真验证了系统在不同风速条件下稳定运行的能力及动态响应性能。; 适合人群:适用于具备电力系统、电机控制理论基础及Simulink仿真操作经验的研究生、科研人员从事新能源发电系统开发的工程技术人员;特别适合正在进行风电系统建模、控制算法研究或完成相关毕业设计的专业人士。; 使用场景及目标:①深入理解直驱式PMSG风力发电系统的整体架构与工作机理;②掌握从物理部件建模到控制策略实现的完整Simulink仿真流程;③学习并复现MPPT控制、双闭环控制等关键技术方案;④为后续开展低电压穿越、并网稳定性分析、故障诊断等高级课题提供可靠的仿真平台支撑。; 阅读建议:建议结合Matlab/Simulink软件动手实践,逐模块搭建模型,重点关注各控制环节的参数设计与调试方法,同时可参照文中提供的其他风电相关资源进行拓展学习与对比分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值