0

我使用以下代码使用 Sqlite 创建了一个数据库。我已将自动增量设置为一列。当我尝试向表中插入值时,它会出错。

db.execSQL("CREATE TABLE IF NOT EXISTS "
                + SAMPLE_TABLE_NAME
                + " (user_id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR,age VARCHAR, zipcode VARCHAR,gender VARCHAR,isstored VARCHAR);");
        db.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ("
                + "\"" + name + "\"," + "\"" + age
                + "\",\"" + zip + "\",\"" + gender + "\", \""
                + "ok" + "\");");

错误:

 09-28 09:44:54.545: E/AndroidRuntime(3825): java.lang.RuntimeException: Unable to   start activity ComponentInfo{com.readometer/com.readometer.ReadometerSplash}: 
android.database.sqlite.SQLiteException: table USERDETAILS has 6 columns but 5 values were supplied (code 1): , while compiling: INSERT INTO USERDETAILS Values ("kumar","23","1234","M", "ok");
4

4 回答 4

1

试试这个代码:

SQLiteDatabase s =getWritableDatabase();
s.execSQL( "INSERT INTO requestmsg (username ,age , zipcode ,gender ,isstored ) " +                 "VALUES ('" + name + "', '" + age+ "','" +  zip+ "','"+gender+"','ok')");
于 2013-11-27T13:33:54.137 回答
1

当您尝试插入时,您应该以这种方式插入它。SQlite 框架会自行将自动递增的值插入到 user_id 列中。

INSERT INTO test.authors (username,age, zipcode,gender,isstored) VALUES ("kumar","23","1234","M", "ok");
于 2013-09-28T04:50:51.687 回答
1

您应该做一些更清洁的事情,首先将所有列属性声明为常量,然后使用以下示例在数据库中进行正确的插入:

ContentValues values = new ContentValues();
values.put(USERNAME, name);
values.put(AGE, age
values.put(ZIPCODE, zip);
values.put(GENDER, gender);
values.put(STORED, ok);
db.insert(SAMPLE_TABLE_NAME, null, values);
于 2013-09-28T04:54:23.097 回答
0

尝试如下:

sql = "INSERT INTO "+ SAMPLE_TABLE_NAME + "( username,age,zipcode,gender,isstored) " +
"VALUES ('" + name + "', '" + age + "','" + zip+ "' ,'" +gender + "' ,'"ok"' )";
db.execSQL(sql);
于 2013-09-28T04:54:20.253 回答