sqlite-SQLite不能识别插入

问题描述

SQLite不能识别插入
想要在表单中新加入一行然后确认是否加入正确,等到查询的时候,程序就崩溃了。

addNewGame(1);Cursor cursor2 = db.query(myDBOpenHelper.GAMES_TABLE new String [] {""MAX(""+GAME_COLUMN+"") AS GC""} null null null null null);System.err.println(""made it this far"");     String temp = cursor2.getString(cursor.getColumnIndex(""GC"")); //crash!!!System.err.println(""didn't get here);private static void addNewGame(int g) {        ContentValues newValues = new ContentValues();    SQLiteDatabase db = DBOpenHelper.getWritableDatabase();     newValues.put(GAME_COLUMN g);    newValues.put(CIV_COLUMN");    db.insert(myDBOpenHelper.GAMES_TABLE null newValues);}

thread exiting with uncaught exception

创建表单的代码:

private static final String GAMES_CREATE =  ""create table "" +            GAMES_TABLE + "" ("" + KEY_ID + integer primary key autoincrement +            GAME_COLUMN + "" text not null +            CIV_COLUMN + "" text);"";db.execSQL(GAMES_CREATE);

解决方案

db.query(myDBOpenHelper.GAMES_TABLE new String [] {""MAX(""+GAME_COLUMN+"") AS GC""} null null null null null);

先不论查得出查不出,但看这样的写法就值得推敲!

首先,android给的这个query方法,是为了方便我们查询使用,其中第二个参数代表列名。你这样的写法是否可以理解为列名就为:MAX(""+GAME_COLUMN+"") AS GC,而你创建表的时候,列名可只有GAME_COLUMN,并没有MAX

如果你想查询最大值,最好使用sql语句查询,而非这个函数

解决方案二:

if(cursor2.getcount>0){cursor2.moveTofirst();String temp = cursor2.getString(cursor.getColumnIndex(""GC""));}

加入我的代码就可以了

解决方案三:
判断你的cursor是否为空,是否有数据,上面Kill_it的代码是建立在cursor有效的情况下的,所以你还是要判断下的。你的代码里curosr还是在初始化的位置 -1,它不知道要找什么。

时间: 2024-05-21 10:06:49

sqlite-SQLite不能识别插入的相关文章

android SQLite向表中插入数据的问题

问题描述 android SQLite向表中插入数据的问题 package com.example.xiangwei; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.test.AndroidTestCase; public class TestCase extends AndroidTestCase { private MyOpenHelper

Windows 7无法识别插入的CD或DVD

首先,使用"设备管理器"按以下步骤尝试卸载并重新安装驱动程序: 1. 单击"开始"按钮,然后单击"控制面板". 2. 单击"硬件和声音",在"设备和打印机"下,选择"设备管理器". 3. 在"设备管理器"中,展开"DVD/CD-ROM 驱动器",右键单击 CD 和 DVD 设备,然后单击"卸载".&http://www.

C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)_C#教程

本文实例讲述了C#操作SQLite数据库方法.分享给大家供大家参考,具体如下: SQLite介绍 SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQ

轻型数据库SQLite结合PHP的开发

数据|数据库 SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快. SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它

SQLite数据库操作实践

 SQLite数据库操作实践 SQLite存储类型 null - 空值  integer - 有符号整数,自增列定义 id integer primary key autoincrement real - 浮点数,存储为8-byte IEEE浮点数  text - 文本字符串 使用数据库编码(UTF-8, UTF-16BE 或 UTF-16LE)进行存储 blob - 二进制数据,如图片.声音等等  也可以接受其它数据类型例如datetime,varchar,nvarchar,decimal,f

SQLite数据库约束详解

一.约束 Constraints 在SQLite数据库中存储数据的时候,有一些数据有明显的约束条件. 比如一所学校关于教师的数据表,其中的字段列可能有如下约束: 年龄 - 至少大于20岁.如果你想录入一个小于20岁的教师,系统会报错. 国籍 - 默认中国.所谓默认,就是如果你不填写,系统自动填上默认值. 姓名 - 不能为空.每个人都有名字嘛. 员工号 - 唯一.这个可不能乱,工资发错了就麻烦了. 上面提到的大于.默认.不能为空.唯一等等,就是数据的约束条件. 我们在用CREATE TABLE 创

C#操作SQLite数据库

SQLite介绍 SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. SQLite数据库官方主页:http://www.sqlite.o

Python 和 Pandas 在 SQLite 数据库中的运用

本文讲的是Python 和 Pandas 在 SQLite 数据库中的运用, SQLite 是一个数据库引擎,使用它能方便地存储和处理关系型数据.它和 csv 格式很相似,SQLite 把数据存储在一个单独的文件中,它能方便地与其他人共享.大部分的编程语言和编译环境都对 SQLite 数据库提供了很好的支持.Python 也不例外,并且专门有一个访问 SQLite 数据库的程序库,叫做 sqlite3,自从 2.5 版本以来,它就已经被 Python 纳入标准库里.在这篇博文中,我们将学会如何使

UWP开发-在UWP中使用sqlite

原文:UWP开发-在UWP中使用sqlite sqlite是一种轻量级的数据库,对于一些资源紧张又需要数据库的开发非常好用. SQLite 是一个开源的无服务器嵌入式数据库. 这些年来,它已作为面向存储在许多平台和设备上的数据的主要设备端技术出现. 通用 Windows 平台 (UWP) 支持并建议使用 SQLite 实现跨所有 Windows 10 设备系列的本地存储. SQLite 最适用于手机应用.面向 Windows 10 IoT 核心版(IoT 核心版)的嵌入式应用程序,以及作为企业关