- 浏览: 239781 次
- 性别:
- 来自: 广州
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
转载自:http://blog.csdn.net/ghd2000/article/details/5600944
android 的sqlite 主键与simpleCursorAdapter
最近在在做一个小例子时,出现一个小问题,就是不能显示从数据库中查出的数据,后来在网上查了一查,才知道原来是这个问题。
在使用simpleCursorAdapter显示sqlite数据时,必须注意sqlite的主键命名。由于simpleCursorAdapter的方法只识别_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现 java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误。
下面是ActivityMain类 供大家参考 一下。
public class ActivityMain extends Activity {
private static int count =0;
//创建数据库对象
private SQLiteDatabase mSqliteDatabase=null;
//数据库名
private static final String DATABASE_NAME="gege.db";
//表名
private static final String TABLE_NAME="jiao";
//表中字段
private static final String TABLE_ID="_id";
private static final String TABLE_NUM="num";
private static final String TABLE_DATA="data";
//创建sqly语句
private static final String CREATE_TABLE=
"CREATE TABLE "+TABLE_NAME +"("+TABLE_ID+" INTEGER PRIMARY KEY," +
""+TABLE_NUM+" INTEGER,"+TABLE_DATA +" TEXT)";
//创建线性布局
LinearLayout m_LinearLayout =null;
//创建ListView列表视图
ListView m_ListView =null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
//创建linearLayout布局对象
m_LinearLayout=new LinearLayout(this);
//设置布局LinearLayout的属性
m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);
//创建ListView对象
m_ListView = new ListView(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
//listView的背景颜色
m_ListView.setBackgroundColor(Color.BLACK);
/*添加m_listView到m_LinearLayout布局*/
m_LinearLayout.addView(m_ListView,param);
//设置显示布局
setContentView(m_LinearLayout);
//打开已经存在数据库,如果数据库不存在,则创建一个数据库
mSqliteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
//获取数据库Phone的Cursor
try {
//创建表
mSqliteDatabase.execSQL(CREATE_TABLE);
} catch (Exception e) {
// TODO Auto-generated catch block
UpdataAdapter();
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode){
case KeyEvent.KEYCODE_DPAD_LEFT:
AddData();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
DeleteData();
break;
case KeyEvent.KEYCODE_1:
upData();
break;
case KeyEvent.KEYCODE_2:
DeleteTable();
break;
case KeyEvent.KEYCODE_3:
DeleteDataBase();
break;
}
return true;
}
/*
* 删除数据库
*
*/
public void DeleteDataBase(){
this.deleteDatabase(DATABASE_NAME);
this.finish();
}
/*
* 删除一个表
*/
public void DeleteTable(){
mSqliteDatabase.execSQL("drop table"+TABLE_NAME);
this.finish();
}
/*
* 更新一条数据
*
*/
public void upData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, count);
cv.put(TABLE_DATA, "修改后的数据"+count);
//更新数据
mSqliteDatabase.update(TABLE_NAME, cv, TABLE_NUM+"="+Integer.toString(count-1), null);
UpdataAdapter();
}
/*
* 更新视图列表
*/
private void UpdataAdapter() {
//获取数据库的Curso对象
Cursor cur =mSqliteDatabase.query(TABLE_NAME, new String[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null, null, null, null, null);
//获得查询的数据的条数
count = cur.getCount();
if(cur !=null && cur.getCount()>=0){
//LisAdapter 是ListView和后台数据的桥梁
ListAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,
cur,new String[]{TABLE_NUM,TABLE_DATA},
new int[]{android.R.id.text1,android.R.id.text2});
m_ListView.setAdapter(adapter);
}
}
//向表中添加一条数据
public void AddData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, count);
cv.put(TABLE_DATA, "测试数据库数据"+count);
//插入数据
mSqliteDatabase.insert(TABLE_NAME, null, cv);
count++;
UpdataAdapter();
}
//从表中删除指定的一条数据
public void DeleteData(){
//删除数据
mSqliteDatabase.execSQL("delete from"+TABLE_NAME+"where id="+Integer.toString(count));
count--;
if(count<0){
count=0;
}
UpdataAdapter();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
//退出并关闭
mSqliteDatabase.close();
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
android 的sqlite 主键与simpleCursorAdapter
最近在在做一个小例子时,出现一个小问题,就是不能显示从数据库中查出的数据,后来在网上查了一查,才知道原来是这个问题。
在使用simpleCursorAdapter显示sqlite数据时,必须注意sqlite的主键命名。由于simpleCursorAdapter的方法只识别_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现 java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误。
下面是ActivityMain类 供大家参考 一下。
public class ActivityMain extends Activity {
private static int count =0;
//创建数据库对象
private SQLiteDatabase mSqliteDatabase=null;
//数据库名
private static final String DATABASE_NAME="gege.db";
//表名
private static final String TABLE_NAME="jiao";
//表中字段
private static final String TABLE_ID="_id";
private static final String TABLE_NUM="num";
private static final String TABLE_DATA="data";
//创建sqly语句
private static final String CREATE_TABLE=
"CREATE TABLE "+TABLE_NAME +"("+TABLE_ID+" INTEGER PRIMARY KEY," +
""+TABLE_NUM+" INTEGER,"+TABLE_DATA +" TEXT)";
//创建线性布局
LinearLayout m_LinearLayout =null;
//创建ListView列表视图
ListView m_ListView =null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
//创建linearLayout布局对象
m_LinearLayout=new LinearLayout(this);
//设置布局LinearLayout的属性
m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);
//创建ListView对象
m_ListView = new ListView(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
//listView的背景颜色
m_ListView.setBackgroundColor(Color.BLACK);
/*添加m_listView到m_LinearLayout布局*/
m_LinearLayout.addView(m_ListView,param);
//设置显示布局
setContentView(m_LinearLayout);
//打开已经存在数据库,如果数据库不存在,则创建一个数据库
mSqliteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
//获取数据库Phone的Cursor
try {
//创建表
mSqliteDatabase.execSQL(CREATE_TABLE);
} catch (Exception e) {
// TODO Auto-generated catch block
UpdataAdapter();
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode){
case KeyEvent.KEYCODE_DPAD_LEFT:
AddData();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
DeleteData();
break;
case KeyEvent.KEYCODE_1:
upData();
break;
case KeyEvent.KEYCODE_2:
DeleteTable();
break;
case KeyEvent.KEYCODE_3:
DeleteDataBase();
break;
}
return true;
}
/*
* 删除数据库
*
*/
public void DeleteDataBase(){
this.deleteDatabase(DATABASE_NAME);
this.finish();
}
/*
* 删除一个表
*/
public void DeleteTable(){
mSqliteDatabase.execSQL("drop table"+TABLE_NAME);
this.finish();
}
/*
* 更新一条数据
*
*/
public void upData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, count);
cv.put(TABLE_DATA, "修改后的数据"+count);
//更新数据
mSqliteDatabase.update(TABLE_NAME, cv, TABLE_NUM+"="+Integer.toString(count-1), null);
UpdataAdapter();
}
/*
* 更新视图列表
*/
private void UpdataAdapter() {
//获取数据库的Curso对象
Cursor cur =mSqliteDatabase.query(TABLE_NAME, new String[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null, null, null, null, null);
//获得查询的数据的条数
count = cur.getCount();
if(cur !=null && cur.getCount()>=0){
//LisAdapter 是ListView和后台数据的桥梁
ListAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,
cur,new String[]{TABLE_NUM,TABLE_DATA},
new int[]{android.R.id.text1,android.R.id.text2});
m_ListView.setAdapter(adapter);
}
}
//向表中添加一条数据
public void AddData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, count);
cv.put(TABLE_DATA, "测试数据库数据"+count);
//插入数据
mSqliteDatabase.insert(TABLE_NAME, null, cv);
count++;
UpdataAdapter();
}
//从表中删除指定的一条数据
public void DeleteData(){
//删除数据
mSqliteDatabase.execSQL("delete from"+TABLE_NAME+"where id="+Integer.toString(count));
count--;
if(count<0){
count=0;
}
UpdataAdapter();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
//退出并关闭
mSqliteDatabase.close();
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1099本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 963在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 948http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 892android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1151http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 954http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1183http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 932Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2667import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2814Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1348我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1395MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1847一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1100创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1833Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1288Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1204http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1037android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1238在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2104最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
除了在代码中直接操作SQLite,`sqlite3.exe`是一个命令行工具,它允许开发者在设备或模拟器外部直接与SQLite数据库交互。通过ADB(Android Debug Bridge)将sqlite3.exe推送到设备上,开发者可以执行SQL命令,查看、...
一个简单的Android SQLite ORM框架不想花资源分的同学可以上我的github主页下载:https://github.com/chenyihan/Simple-SQLite-ORM-Android,因为要传到github,所以代码中的注释和doc文档都是英文的,对自己英文不...
当开发者需要对应用中的SQLite数据库进行备份与还原时,通常需要自定义实现这个过程,因为Android系统本身并不提供原生的数据库备份和恢复机制。以下是对"android sqlite数据的备份与还原"这一主题的详细解释: 1. ...
6. **备份与恢复**:可以导出数据库为.db文件或SQLite Dump格式,以便备份和在不同设备间迁移数据;同样,也能从备份文件中恢复数据。 7. **权限控制**:对于多用户环境,可以设置不同用户的访问权限,保护数据安全...
验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...
《Android SQLite Admin 数据库管理软件详解》 在移动应用开发领域,SQLite作为一款轻量级的数据库管理系统,广泛应用于Android平台。它允许开发者在应用程序中存储、管理和检索数据,而无需依赖外部服务器。为了...
android SQLite DBHelper 单例模式 实现 dbhelper=DBHelper.getInstance(this);
SQLite 是一个轻量级的关系型数据库管理系统,广泛应用于移动设备,尤其是 Android 平台。它无需服务器进程,可直接在应用程序中使用,非常适合存储和管理应用程序数据。Android 系统自始至终内置了 SQLite 支持,...
"Android sqlite设置主键自增长的方法教程" Android 中的 SQLite 数据库设置主键自增长的方法是非常重要的,今天我们将通过一个实例代码,来介绍 Android sqlite 设置主键自增长的方法教程。 首先,我们需要了解...
6. **I/O操作**:SQLite与文件系统的交互,包括如何读写数据库文件。 7. **安全性**:SQLite的加密机制和权限控制。 通过研究源码,开发者可以更深入地了解SQLite的工作流程,从而优化数据库操作,减少资源消耗,...
在Android应用开发中,SQLite是一个轻量级的关系型数据库,它被广泛用于存储应用程序的数据。SQLite数据库具有体积小、速度快、无需单独服务器进程等优点,非常适合嵌入式系统,如移动设备上的Android应用。本教程将...
它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 ...
GreenDao是一款针对Android平台设计的高性能ORM库,它的核心功能是将Java对象与SQLite数据库表进行映射,使得开发者可以以面向对象的方式处理数据库操作,如创建、查询、更新和删除数据,极大地提高了开发效率。...
SQLite是一款轻量级的数据库管理系统,它被广泛应用于Android应用程序中,因为它不需要独立的服务进程,而是内嵌在应用中,提供了高效、可靠的本地数据存储功能。"android SQLite数据库管理软件"是一个专为Android...
这将帮助你理解Android应用中如何与SQLite3数据库进行交互,如何设计数据库表,以及如何执行基本的CRUD(Create、Read、Update、Delete)操作。同时,这也是一个很好的实践项目,可以帮助你巩固和提升Android数据库...
这个"Android SQLite数据库操作Demo"项目将帮助你理解如何在实际应用中与SQLite数据库进行交互,包括基本的CRUD操作以及事务处理,这些都是Android开发中不可或缺的部分。通过实践这个Demo,你可以深入理解SQLite...
### 高清彩版 Android SQLite Essentials #### 一、引言与概述 《高清彩版 Android SQLite Essentials》是一本专注于Android平台下SQLite数据库应用开发的专业书籍。本书由Sunny Kumar Aditya 和 Vikash Kumar ...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的结构化数据。本案例围绕"android sqlite数据库框架"展开,旨在通过Java注解...
总之,“Android SQLite可视化操作工具”为Android开发者提供了高效的数据管理手段,减少了与SQLite数据库交互时的复杂性,提高了开发效率。通过熟练掌握这类工具,开发者可以更好地管理和优化应用程序的数据库部分...