gpt4 book ai didi

Android INSERT语句问题

转载 作者:行者123 更新时间:2023-11-30 03:59:35 25 4
gpt4 key购买 nike

在创建数据库时尝试将数据插入到数据库时出现语法错误。

我正在使用以下代码:

//DatabaseHelper class
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_INSPECTION_TABLE);
db.execSQL(CREATE_AREA_TABLE);
db.execSQL(CREATE_RUN_TABLE);
db.execSQL(CREATE_LOCATION_TABLE);
db.execSQL(CREATE_INSPECTORS_TABLE);
db.execSQL(CREATE_ISSUE_LOCATION_TABLE);
db.execSQL(CREATE_ISSUE_TYPE_TABLE);
db.execSQL(CREATE_RACKING_SYSTEM_TABLE);
db.execSQL(CREATE_COMPONENT_TABLE);
db.execSQL(CREATE_RISK_TABLE);
db.execSQL(CREATE_ACTION_TABLE);
db.execSQL(CREATE_MANUFACTURER_TABLE);

db.rawQuery("INSERT INTO " + INSPECTORS_TABLE + "(" + INSPECTOR_NAME + ") " +
"SELECT 'Joe Bloggs' AS " + INSPECTOR_NAME +
" UNION SELECT 'John Major' " +
" UNION SELECT 'Dan the man'"
, null);

db.rawQuery("INSERT INTO " + ACTION_TABLE + "(" + ACTION_REQUIRED + ") " +
"SELECT 'Red Risk' AS " + ACTION_REQUIRED +
" UNION SELECT 'Amber Risk' " +
" UNION SELECT 'Green Risk'"
, null);

根据 RedFliter 的重要建议再次编辑。我确定查询现在是正确的,但是虽然我没有收到任何错误,但没有记录被输入到表中(每次使用 DDMS 都删除了数据库)。

我是否将此代码放在正确的位置(即 onCreate)?

不确定我哪里出错了..

非常感谢。

最佳答案

您需要在字符串周围添加单引号:

db.rawQuery("INSERT INTO " + INSPECTIONS_TABLE + " (" + INSPECTOR_NAME + ")          VALUES " + "('Joe Blogs', 'John Smith', 'Franky Hollywood')", null); 

此方法受 SQL 注入(inject)的影响。您需要对此加以防范。

更新:

对于多行插入,你需要做:

db.rawQuery("INSERT INTO " + INSPECTIONS_TABLE + "(" + INSPECTOR_NAME + ") " + "select 'Joe Bloggs' as " + INSPECTOR_NAME + " UNION ALL select 'John Major' UNION ALL select 'Dan the man'", null); 

关于Android INSERT语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712719/

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