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 ...
随机推荐
- Java工具
1. Groovy shell 可以在Java代码里执行脚本,可以将Java方法配置在文件里 依赖 <dependency> <groupId>org.codehaus.gro ...
- Oracle 参数之_small_table_threshold
SQL> select * from v$version; BANNER ------------------------------------------------------------ ...
- Metro 页面间跳转报错、打包和安装一个本地的Metro类型应用
1.模板页面间传值跳转报错误 参照:http://www.cnblogs.com/dagehaoshuang/archive/2012/08/31/2665166.html#2862480 强烈推荐, ...
- Cross-Site Scripting(XSS)的类型
本文源自: https://www.owasp.org/index.php/Types_of_Cross-Site_Scripting 在原文理解上翻译为中文. 背景 本文描述多种不同类型的XSS攻击 ...
- HTTP协议上传boundary确定&下载content-disposition理解
HTTP协议上传文件-协议 上传文件需要将form标签 的 ENCTYPE 属性设置为 multipart/form-data属性, 与 application/x-www-form-urlencod ...
- Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...
- Spring框架简介 Spring Framework Introduction
Introduction The Spring Framework provides a comprehensive programming and configuration model for m ...
- dede 数据库类使用列表
dedecms的数据库操作类,非常实用,在二次开发中尤其重要,这个数据库操作类说明算是奉献给大家的小礼物了. 引入common.inc.php文件 require_once (dirname(__FI ...
- dotnetnuke peek. glance.
/**** 15:59:39.05 ***/ use dotnetnuke to create websites: 1. install 2. create webpage template 3. c ...
- 原生js与css3结合的电风扇
最近学习了css3,就琢磨做些东西练练手,下面是自己写的一个电风扇,使用了原生js中的定时器和css3的一些属性 <!doctype html> <html lang="e ...