ekj*_*yot 1 database sqlite android
我正在从数据库中的服务器存储一些值,但是当我将值插入数据库时它给了我以下异常:
android.database.sqlite.SQLiteException: bind or column index out of range
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
我在其他类中插入值:
db = new WineDatabaseAdapter(HomePageWithPhoneIsOfflineDialog.this);
db.insert( type,width, height,encoding, data1,iid);
Run Code Online (Sandbox Code Playgroud)
以下是堆栈跟踪:
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)
Run Code Online (Sandbox Code Playgroud)
我认为这很简单.只需阅读错误.
绑定或列索引超出范围
你有6个?在你的字符串中:
private static final String INSERT = "insert into "
+ DATABASE_TABLE + "(type,width,height,encoding,data,iid)"+" values (?,?,?,?,?,?)";
Run Code Online (Sandbox Code Playgroud)
并且您尝试在此处绑定索引为7的列:
this.insertStmt.bindString(7, KeyIId);
Run Code Online (Sandbox Code Playgroud)
编辑: bindString使用的索引是从1开始的,因此您必须从1开始索引.
| 归档时间: |
|
| 查看次数: |
7588 次 |
| 最近记录: |