Android 2.3.3
Eclipse Version: 3.7.0
LogCat
LogCat 报错信息:
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): java.lang.IllegalArgumentException: the bind value at index 2 is null
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:237)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:185)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at com.tmall.nokia.db.RecordDBHelper.query(RecordDBHelper.java:53)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at com.tmall.nokia.manage.RecordDBopt.get(RecordDBopt.java:80)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at com.tmall.nokia.Play.savePlayCount(Play.java:775)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at com.tmall.nokia.Play$5.run(Play.java:369)
03-13 10:25:37.163: ERROR/AndroidRuntime(4166): at java.util.Timer$TimerImpl.run(Timer.java:284)
发生错误原因分析:
检查相关代码,发现
传入savePlayCount的String值programid为null,在传入之前和传入后均未作判断
public void savePlayCount(String programid, int count) {
……
}
而programid最终作为参数args这个String数组中的一个值,用于数据库查询
Cursor cur = db.query(TBL_NAME, null, where, args, null, null, order);
由于args这个String数组中的String有null值,报错
解决办法:
在传入programid前或之后对其值作判断
if (programid != null) {
……
}
PS:args这个String数组中不能有null值
分享到:
相关推荐
android SQLiteQuery的基本操作
SQLite数据查看工具
表中的一个 NULL 值是在字段中显示为空白的一个值。 带有 NULL 值的字段是一个不带有值的字段。NULL 值与零值或包含空格的字段是不同的,理解这点是非常重要的。 语法 创建表时使用 NULL 的基本语法如下: SQLite> ...
用传参数的方法实现Java对SQLite的添加和查询(不用拼接sql语句的方法,不用屏蔽单引号,工程包括sqlite-jdbc-3.27.2.1.jar)
sqlite_has_more —— 返回是否有更多可用的行(whether or not more rows are available)。 sqlite_last_error —— 返回数据库的最新的错误代码(the error code of the last error for a database)。 sqlite_...
主要介绍了C#实现Excel导入sqlite的方法,是C#程序设计中非常重要的一个实用技巧,需要的朋友可以参考下
该项目为unicode编码格式,一个简单...项目中用到的sqlite3.dll,sqlite3.lib是下载的最新的源代码自己编译生成的,所以应该是最新版本 为了丰富功能,又添加了开机自动运行,基于dialog程序的启动隐藏到系统托盘的功能
本文实例讲述了C#解决SQlite并发异常问题的方法。分享给大家供大家参考,具体如下: 使用C#访问sqlite时,常会遇到多线程并发导致SQLITE数据库损坏的问题。 SQLite是文件级别的数据库,其锁也是文件级别的:多个线程...
在Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径...
主要介绍了C#中增加SQLite事务操作支持与使用方法,结合实例形式分析了C#中针对SQLite事务操作的添加及使用技巧,需要的朋友可以参考下
sqlite3_bind_null sqlite3_bind_parameter_count sqlite3_bind_parameter_index sqlite3_bind_parameter_name sqlite3_bind_text sqlite3_bind_text16 sqlite3_busy_handler sqlite3_busy_timeout sqlite3_changes ...
SQLite数据库安装方法
SQLite Expert: A powerful administration tool for your SQLite databases Are you developing SQLite3 databases and need an easy and powerful tool? SQLite Expert is the perfect choice. It is the most ...
SQLite日期时间函数,数据库中常常用到日期和字符的转换,本文介绍了在sqlite数据库中日期和字符之间转换的方法,以前对日期运算的操作。
Windows SQLite 创建数据库 方法
一种非常简单的方式解决Sqlite中文排序问题(网页)
资源分类:Python库 所属语言:Python 资源全名:sqlite-s3-query-0.0.53.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
android在客户端本地存储数据时常用到sqlite数据库存储数据,分享sqlite的优化经验。
可以解决中文乱码问题,共享给大家,解决UTF-8 转换 gb2312,直接放到Bin目录中并引用