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 ...
随机推荐
- JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')
最开始,我是借鉴 孤傲苍狼的JNDI教程去做的,他讲得很详细,但是坏处也就是因为他讲的太详细.查了很多书,都是建议说不要用全局去配置JNDI,一是要修改tomcat的server.xml,容易破坏to ...
- PHP检测移动设备类mobile detection使用实例
目前,一个网站有多个版本是很正常的,如PC版,3G版,移动版等等.根据不同的浏览设备我们需要定向到不同的版本中.不仅如此,我们有时候还需要根据不同的客户端加载不同的CSS,因此我们需要能够检测浏览设备 ...
- 14交互活动:XHTML表单
表单基本上就是带有一块输入信息区域的网页.当提交表单时,表单中的信息被打成一个数据包发送给web服务器,web应用程序对之经行处理.处理完成后,可以获得另一个相应页面. 使用<form>元 ...
- 欢快的使用Unity JSON吧
0x01:前言 Unity 5.3加入了UnityUtility类,意味着Unity终于有了自己原生态的JSON库.Unity主要用来游戏开发,JSON做为游戏开发中最受欢迎的配置文件.在官方没有库支 ...
- win7下VS2015+opencv3.1.0配置
由于opencv与vs的适配版本不同,本人在官网下载opencv3.1.0,其可以和VS2013.VS2015适配,文中以VS2015为例 opencv2.4.13-----vc11;vc12 ope ...
- Extjs 表格横坐标显示问题
在项目中显示chart时,当横坐标的标签名称过长时,extjs会自动隐藏部分的标签. 我想,如果能让标签斜着,或者纵向显示的话,就能够节省x轴上的长度. 经过在网上查找,解决方案如下. //在表格的a ...
- github 或者gitlab 设置添加SSH, 避免每次提交重复输入用户名
克隆项目二种方式: 1. 使用https url克隆, 复制https url 然后到 git clone https-url 2.使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH ...
- 无法识别的属性“targetFramework”的解决方法
本文导读:网站发布后,在IIS中浏览的时候出现以下异常:无法识别的属性“targetFramework”,请注意属性名称区分大小写.出现这个问题是由IIS配置该站点的.NET Framework 版本 ...
- Echarts 地图(map)插件之 鼠标HOVER和tooltip自定义提示框
[自行修改 "引号"] 一.鼠标HOVER时的事件: 参照官方文档解释, 可以看出这款插件有丰富的鼠标事件可供选择: 调用鼠标HOVER事件的方法很简单,只需把以下代码放到char ...
- Maven聚合与继承的实例讲解(二)
继续上一节讲Maven的内容,我们这个节继续讲Maven继承和聚合的其他内容. 现在我们新建一个实例来测试Maven有关于聚合的部分 测试开始 一.建立以pom为packaging的项目 ...