我非常推荐您使用db.insert()
直接指定用于向表中插入新行的 SQLiteDatabase 的 API 方法。该解决方案更清洁。
public void insertIntoDatabase(String field_one, String field_two){
ContentValues data = new ContentValues();
data.put("COL_USERNAME", field_one);
data.put("COL_PASSWORD", field_two);
if (db == null) {
// make sure that your db is properly initialised
}
db.insert("tablename", "nullColumnHack", data);
}
nullColumnHack的解释:
如果您提供的值为空,则表示不知道列名并且无法插入空行。如果未设置为 null,则 nullColumnHack 参数提供可空列名称的名称,以便在您的值为空的情况下显式插入 NULL。
这意味着如果您传递空的 ContentValues ,Android SQLite
您必须指定一列将分配给该列。NULL
如果您想使用您的方法,我建议您使用占位符。
String sql = "INSERT INTO UserTable.NAME (COL_USERNAME, COL_PASSWORD) " +
"VALUES (?, ?)";
db.execSQL(sql, new String[] {field_one, field_two});
注意:可能它不起作用,因为您没有使用单引号。
VALUES ("' + field_one + '", "' + field_two + '")"
并确保给定的表名是正确的。我建议创建将保存表名和列名的静态变量。
public static final String TABLE_NAME = "Table";
String query = "insert into " + ClassName.TABLE_NAME + " values(?, ?)"