【问题标题】:android.database.sqlite.SQLiteException: bind or column index out of rangeandroid.database.sqlite.SQLiteException:绑定或列索引超出范围
【发布时间】:2011-11-03 20:59:47
【问题描述】:

我将从服务器获取的一些值存储在数据库中,但是当我将值插入数据库时​​,它给了我以下异常:

   android.database.sqlite.SQLiteException: bind or column index out of range

我正在使用以下代码:

       private static final String INSERT = "insert into " 
         + DATABASE_TABLE + "(type,width,height,encoding,data,iid)"+" values (?,?,?,?,?,?)";


     public WineDatabaseAdapter(Context context) {
          this.context = context;
       WineDatabaseHelper openHelper = new WineDatabaseHelper(context);
       this.db=openHelper.getWritableDatabase();
      this.insertStmt=this.db.compileStatement(INSERT);
       }


public long insert(String KEY_TYPE ,String KEY_WIDTH,String KEY_HEIGHT, String KEY_ENCODING,String KEY_DATA,String KeyIId){
           this.insertStmt.bindString(0, KEY_TYPE);
           this.insertStmt.bindString(1, KEY_WIDTH);
           this.insertStmt.bindString(2, KEY_HEIGHT);
           this.insertStmt.bindString(3, KEY_ENCODING);
           this.insertStmt.bindString(4, KEY_DATA);
           this.insertStmt.bindString(5, KeyIId);
           return this.insertStmt.executeInsert();
       }

我正在其他类中插入值:

    db = new WineDatabaseAdapter(HomePageWithPhoneIsOfflineDialog.this);
  db.insert( type,width, height,encoding, data1,iid);

以下是堆栈跟踪:

         11-03 17:32:15.406: WARN/System.err(22895): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x319db0
        11-03 17:32:15.406: WARN/System.err(22895):     at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method)
        11-03 17:32:15.406: WARN/System.err(22895):     at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:244)
        11-03 17:32:15.406: WARN/System.err(22895):     at com.emx.Winwcountry.database.WineDatabaseAdapter.insert(WineDatabaseAdapter.java:52)
        11-03 17:32:15.406: WARN/System.err(22895):     at com.emx.Winwcountry.HomePageWithPhoneIsOfflineDialog$1.onClick(HomePageWithPhoneIsOfflineDialog.java:144)
       11-03 17:32:15.406: WARN/System.err(22895):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
         11-03 17:32:15.406: WARN/System.err(22895):     at android.os.Handler.dispatchMessage(Handler.java:99)
        11-03 17:32:15.406: WARN/System.err(22895):     at android.os.Looper.loop(Looper.java:130)
      11-03 17:32:15.406: WARN/System.err(22895):     at android.app.ActivityThread.main(ActivityThread.java:3683)
         11-03 17:32:15.406: WARN/System.err(22895):     at java.lang.reflect.Method.invokeNative(Native Method)
       11-03 17:32:15.406: WARN/System.err(22895):     at java.lang.reflect.Method.invoke(Method.java:507)
       11-03 17:32:15.406: WARN/System.err(22895):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
          11-03 17:32:15.406: WARN/System.err(22895):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
         11-03 17:32:15.406: WARN/System.err(22895):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android database sqlite


    【解决方案1】:

    我认为这很简单。只需阅读错误。

    绑定或列索引超出范围

    你有 6 个?在你的字符串中:

     private static final String INSERT = "insert into " 
         + DATABASE_TABLE + "(type,width,height,encoding,data,iid)"+" values (?,?,?,?,?,?)";
    

    并且您正在尝试在此处绑定索引为 7 的列:

    this.insertStmt.bindString(7, KeyIId);
    

    编辑: bindString 使用的索引是从 1 开始的,所以你必须从 1 开始索引。

    【讨论】:

    • 我已经更正了它也给出了同样的例外
    • 你能把你初始化的代码贴出来insertStmt
    • 您的代码看起来不错。你能发布堆栈跟踪吗?也许我们可以在那里找到一些东西。
    • 请确保type,width,height,encoding,data,iid 列存在于您正在查询的表中。
    • 还要确保在绑定参数时没有传递任何null 值。
    【解决方案2】:

    看到您提到了 6 列,但您在 insert() 函数中设置了 7 列。另外,索引从 0 开始,而不是从 1 开始。所以您的索引范围从 0 到 5。

    【讨论】:

    • 我根据你修改了代码,但它仍然给出同样的异常
    • @ekjyot。根据表的列数据类型,所有数据类型都正确吗?请检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多