热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLite异常:Android中没有这样的列

如何解决《SQLite异常:Android中没有这样的列》经验,为你挑选了1个好方法。

我写了一个应用程序来更新SQlite Db中的行,下面是数据处理程序中更新的代码:

public long updatedata(String ID, String NAME,String NUMBER)
    {
        ContentValues cOntent= new ContentValues();
        content.put(name, NAME);
        content.put(number,NUMBER);
        return db.update(table_name, content, "id "+"="+ID, null);

    }

现在当我需要更新我在下面的代码中使用的行时:

Datahandler data =new Datahandler();
data.open();
long updateresult = data.updatedata(oldID, cloudnames.get(pos), cloudnumbers.get(pos));
data.close();

还假设上面提供的值是存在且有效的,并且我确信我的数据库中存在id = jo_2,问题是当我运行代码时,异常如下所示:

02-19 23:59:34.200: E/SQLiteLog(18485): (1) no such column: jo_2
02-19 23:59:34.205: W/dalvikvm(18485): threadid=11: thread exiting with uncaught exception (group=0x41b30c08)
02-19 23:59:34.210: E/AndroidRuntime(18485): FATAL EXCEPTION: IntentService[test-service]
02-19 23:59:34.210: E/AndroidRuntime(18485): Process: com.kaizendroid.bc, PID: 18485
02-19 23:59:34.210: E/AndroidRuntime(18485): android.database.sqlite.SQLiteException: no such column: jo_2 (code 1): , while compiling: UPDATE info SET name=?,number=? WHERE id =jo_2
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:690)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1706)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1654)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at com.kaizendroid.bc.DataHandler.updatedata(DataHandler.java:122)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at com.kaizendroid.bc.MyTestService.getbcfromcloud(MyTestService.java:169)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at com.kaizendroid.bc.MyTestService.get_local_cloud_compare(MyTestService.java:70)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at com.kaizendroid.bc.MyTestService.onHandleIntent(MyTestService.java:49)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.os.Looper.loop(Looper.java:146)
02-19 23:59:34.210: E/AndroidRuntime(18485):    at android.os.HandlerThread.run(HandlerThread.java:61)

Cᴏʀʏ.. 8

该错误并不是说表中缺少"jo_2"值,而是缺少名为的jo_2.听起来你某处有一些格式错误的SQL.

如果这是您的实际SQL(来自错误):

UPDATE info SET name=?,number=? WHERE id =jo_2

然后你需要一些部分引用jo_2:

UPDATE info SET name=?,number=? WHERE id = 'jo_2'

没有它们,SQLite正在将列id 进行比较,该jo_2不存在.

要解决此问题,您可以在代码中更改此行:

return db.update(table_name, content, "id = '" + ID + "'", null);
                        // add quotes here  ^      and ^

编辑:Falmarri的答案显示了一种更安全的方法来修复您的代码以避免错误.



1> Cᴏʀʏ..:

该错误并不是说表中缺少"jo_2"值,而是缺少名为的jo_2.听起来你某处有一些格式错误的SQL.

如果这是您的实际SQL(来自错误):

UPDATE info SET name=?,number=? WHERE id =jo_2

然后你需要一些部分引用jo_2:

UPDATE info SET name=?,number=? WHERE id = 'jo_2'

没有它们,SQLite正在将列id 进行比较,该jo_2不存在.

要解决此问题,您可以在代码中更改此行:

return db.update(table_name, content, "id = '" + ID + "'", null);
                        // add quotes here  ^      and ^

编辑:Falmarri的答案显示了一种更安全的方法来修复您的代码以避免错误.


推荐阅读
author-avatar
干杯13ds_198
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有