开发者社区> 问答> 正文

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);

展开
收起
a123456678 2016-07-18 13:50:51 2016 0
1 条回答
写回答
取消 提交回答
  • 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语句查询,而非这个函数

    2019-07-17 19:57:46
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载