gpt4 book ai didi

尝试插入表时出现 Android SQLite 数据库错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:29 25 4
gpt4 key购买 nike

在我的项目中,在一个类public class DBHelper extends SQLiteOpenHelper中添加一个函数来将元素插入到数据库中。函数如下所示。

public void insertIntoDatabase(String field_one,String field_two){
String sql = "INSERT INTO UserTable.NAME (COL_USERNAME, COL_PASSWORD) " +
"VALUES (" + field_one + ", " + field_two + ")";
db.execSQL(sql);

在主要 Activity 中读取名称和密码并调用函数插入数据库

DBHelper dbhelper;



dbhelper.insertIntoDatabase(rdname.getText().toString(), rdpwrd.getText().toString());

但是出现了错误。

最佳答案

我非常推荐您使用 SQLiteDatabase db.insert() 的 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 的解释:

If your provided values is empty, no column names are known and an empty row can't be inserted. If not set to null, the nullColumnHack parameter provides the name of nullable column name to explicitly insert a NULL into in the case where your values is empty.

这意味着在 Android SQLite 中,如果您传递空的 ContentValues,您必须指定一个将被分配 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(?, ?)"

关于尝试插入表时出现 Android SQLite 数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com