sqlite与android交互 (封装)
学android已经有大概一周时间了吧 ,总感觉自己基础不怎么好,只能通过一点一点积累着敲来巩固平常的知识,有的时候就先不封装的敲一遍,再封装上,有些语句真的记不住,虽然知道他是什么意思,于是乎就反复的敲着,加油吧!少年,下面进入正题吧
DBConn.java类 主要是将raw写入到DDMS里的data/data/xxx包/下,代码如下:
package com.tp.soft.util; import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream; import com.example.dbcity.R; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment; public class DBConn {
private static String DB_NAME = "test.db";
private static String PACKAGE = "com.example.dbcity";
private static String PATH = "/data" +
Environment.getDataDirectory().getPath()+
File.separator + PACKAGE;
private Context context;
private SQLiteDatabase database;
public DBConn(Context context){
this.context = context;
} public static final DBConn getInstance(Context context){
DBConn conn = new DBConn(context);
return conn;
}
public SQLiteDatabase getDb(){
database = openDB(PATH + File.separator + DB_NAME);
return database;
} public SQLiteDatabase openDB(String dbFile){
try{
if(!isExitFile(dbFile)){
InputStream is = context.getResources().openRawResource(R.raw.test);
FileOutputStream fos = new FileOutputStream(dbFile);
byte[] buffer = new byte[];
int len = -;
while((len = is.read(buffer)) != -){
fos.write(buffer, , len);
}
is.close();
fos.close();
} database = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
return database;
}catch (Exception e) {
e.printStackTrace();
return null;
}
} public boolean isExitFile(String path){
File file = new File(path);
return file.exists();
}
}
DBManage.java主要是对数据库的封装,目前只做了个查询,待后期完善吧,代码如下:
package com.tp.soft.util; import java.util.ArrayList;
import java.util.List; import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; public class DBManage {
private SQLiteDatabase db; public DBManage(Context context) {
DBConn conn = DBConn.getInstance(context);
db = conn.getDb();
} public List<String> queryData(String sql, String[] selectionArgs, String property){
Cursor cursor = null;
List<String> list = new ArrayList<String>();
try{
cursor = db.rawQuery(sql, selectionArgs);
while(cursor.moveToNext()){
String str = cursor.getString(cursor.getColumnIndex(property));
list.add(str);
}
}catch (Exception e) {
e.printStackTrace();
}finally{
if(null != cursor){
cursor.close();
}
}
return list;
} }
主入口就是一个下拉列表的显示,然后就是调用sqlite数据库了,部分代码如下:
proSelect = (Spinner) findViewById(R.id.proSelect);
DBManage dbManage = new DBManage(this);
List<String> proList = dbManage.queryData("select * from au_user", null, "username");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_gallery_item, proList);
proSelect.setAdapter(arrayAdapter);
总结一句话,其实代码敲多了 才去想怎么敲,而不是一点都没敲就去想如何将语句敲到最好 我觉得这个是不可能的,菜鸟自学路程。。。
sqlite与android交互 (封装)的更多相关文章
- [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- 利用SQLite在android上实现增删改查
利用SQLite在android上实现增删改查 方法: 一.直接利用database.execSQL()方法输入完整sql语句进行操作 这种方法适用于复杂的sql语句,比如多表查询等等 这里适合于增删 ...
- Android 谈谈封装那些事 --BaseActivity 和 BaseFragment(二)
1.前言 昨天谈了BaseActivity的封装,Android谈谈封装那些事--BaseActivity和BaseFragment(一)有很多小伙伴提了很多建议,比如: 通用标题栏可以自定义Vi ...
- Android Toast 封装,避免Toast消息覆盖,替换系统Toast最好用的封装
Android Toast 封装,避免Toast消息覆盖,无阻塞,等强大功能 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- sqlite在Android上的一个bug:SQLiteCantOpenDatabaseException when nativeExecuteForCursorWindow
更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ ::-/com.company.product W/System.er ...
- js 与 ios Android交互
一.android 交互 1.js调用webview 在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个 ...
- WebView之javascript与android交互基础加强
一.什么是js与android交互? 通俗一点就是使用js代码调用java代码,或者使用java代码调用js代码. 二.为什么要使用js与java代码交互? 1.可以做一些js网页做本身处理不了的事情 ...
- 使用Struts2服务端与android交互
转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html android--使用Struts2服务端与androi ...
随机推荐
- [办公自动化]一次制作、多场合多次使用的PPT
面试或汇报总结时,你可能需要制作一份PPT来介绍自己.但是这些场合你不一定能讲完所有的内容. 你可以尝试分1分钟.3分钟.5分钟.10分钟的版本来准备. 使用同一份PPT. 没错. 在office20 ...
- 带清空按钮的EditText
public class ClearEditText extends EditText implements OnFocusChangeListener, TextWatcher { // 删除按钮的 ...
- thinkphp3.2 cli模式的正确使用方法
最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多, ...
- IOS 单例模式的写法
iOS的单例模式有两种官方写法,如下: 1)不使用GCD的方式 #import "Manager.h" static Manager *manager; @implementati ...
- bringSubviewToFront和insertSubview: atIndex:
bring方法只能在当前SuperView中改变位置,insertSubview则可以脱离自己的superVIew,成为另个同级甚至高级的view的子view
- loadrunner generators (controller in windows)
http://my.oschina.net/u/2391658/blog/735690 http://blog.csdn.net/xu1314/article/details/7455114 http ...
- 关于preg_match输出多个数组的解释,使用()时
第一个数组显示的是所有的匹配,第二个显示的是第一个括号里的内容,第三个显示的是第二个括号里的内容
- LightOj 1236 - Pairs Forming LCM (分解素因子,LCM )
题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意:给你一个数n,求有多少对(i, j)满足 LCM(i, j) = n, ...
- electron开发(一)
0. 简介 http://electron.atom.io/ 官网 https://www.v2ex.com/t/277623 基于 Electron 的 Linux 下的网易云音乐 https: ...
- Pyhton 学习总结 21 :fileinput模块
fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次性 ...