在SQLite数据库中设置默认值

时间:2019-06-09 15:29:14

标签: java android android-sqlite

如何在android studio中从我的sqlite数据库设置默认值

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE "+TABLE+" (id INTEGER PRIMARY KEY AUTOINCREMENT, indo TEXT, tdr TEXT)";
    db.execSQL(createTable);
    db.execSQL("INSERT INTO "+TABLE+" (indo,tdr) VALUES (ikan,nyao)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE);
    onCreate(db);
}

我想在数据库中输入示例数据,然后当我尝试在

中运行错误时
db.execSQL("INSERT INTO "+TABLE+" (indo,tdr) VALUES (ikan,nyao)");

哪里出错了,是吗?是因为写作规则吗?

1 个答案:

答案 0 :(得分:0)

问题在于这些值需要用单引号引起来,否则它们将被视为实体名称(在这种情况下为列名称)。

所以您可以使用:-

db.execSQL("INSERT INTO "+TABLE+" (indo,tdr) VALUES ('ikan','nyao')") //<<<<<<<<<< ikan and nyao enclosed in single quotes

但是,更正确的方法是使用绑定参数,在这种情况下,您可以使用:

db.execSQL("INSERT INTO "+TABLE+" (indo,tdr) VALUES (?,?)",new String[]{"ikan","nyao"});
  • 在绑定参数时(将 ? 替换为相应的值)时,将封闭这些值以提供针对SQL注入的保护(尽管SQL注入攻击是不可能的,因为数据不是用户提供的)。