java - Android Studio Java 中的 SQLite 更新数据库行
问题描述
我想使用以下代码更新 SQLite 数据库行:
public void updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){
SQLiteDatabase db = this.getWritableDatabase();
String query = "UPDATE " + TABLE_NAME + " SET "
+ COL3 + " = '" + col3
+ COL4 + " = '" + col4
+ COL5 + " = '" + col5
+ COL6 + " = '" + col6
+ COL7 + " = '" + col7
+ COL8 + " = '" + col8
+ COL9 + " = '" + col9
+ COL10 + " = '" + col10
+ COL11 + " = '" + col11
+ COL12 + " = '" + col12
+ COL13 + " = '" + col13
+ COL14 + " = '" + col14
+ COL15 + " = '" + col15
+ COL16 + " = '" + col16
+ COL17 + " = '" + col17
+ "' WHERE " + COL2 + " = '" + profileName + "'";
Log.d(TAG, "update Profile: " + profileName);
db.execSQL(query);
}
出于某种原因,我得到了一些错误。
解决方案
您有两个反复出现的错误/错误:-
- 您省略了围绕正在设置的值的单引号,并且
- 您省略了各个集合子句之间的 , (逗号)。
你要 :-
public int updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){
SQLiteDatabase db = this.getWritableDatabase();
String query = "UPDATE " + TABLE_NAME + " SET "
+ COL3 + " = '" + col3 + "',"
+ COL4 + " = '" + col4 + "',"
+ COL5 + " = '" + col5 + "',"
+ COL6 + " = '" + col6 + "',"
+ COL7 + " = '" + col7 + "',"
+ COL8 + " = '" + col8 + "',"
+ COL9 + " = '" + col9 + "',"
+ COL10 + " = '" + col10 + "',"
+ COL11 + " = '" + col11 + "',"
+ COL12 + " = '" + col12 + "',"
+ COL13 + " = '" + col13 + "',"
+ COL14 + " = '" + col14 + "',"
+ COL15 + " = '" + col15 + "',"
+ COL16 + " = '" + col16 + "',"
+ COL17 + " = '" + col17
+ "' WHERE " + COL2 + " = '" + profileName + "'";
Log.d(TAG, "update Profile: " + profileName);
db.execSQL(query);
}
- 请注意,以上内容未经测试,但原则上是您想要的。
然而;
更简单且不易出错的方法是让 SQLiteDatabase更新便捷方法为您完成生成 SQL 的工作。因此,我建议使用:-
public void updateProfile(String profileName, String col3, String col4, String col5, String col6, String col7, String col8, String col9, String col10, String col11, String col12, String col13, String col14, String col15, String col16, String col17){
ContentValues cv = new ContentValues();
cv.put(COL3,col3);
cv.put(COL4,col4);
cv.put(COL5,col5);
cv.put(COL6,col6);
cv.put(COL7,col7);
cv.put(COL8,col8);
cv.put(COL9,col9);
cv.put(COL10,col10);
cv.put(COL11,col11);
cv.put(COL12,col12);
cv.put(COL13,col13);
cv.put(COL14,col14);
cv.put(COL15,col15);
cv.put(COL16,col16);
cv.put(COL17,col17);
SQLiteDatabase db = this.getWritableDatabase();
Log.d(TAG, "update Profile: " + profileName);
return db.update(TABLE_NAME,cv,COL2 + "=?",new String[]{profileName};
}
- 同样,此代码尚未经过测试或运行,因此可能包含一些错误。
- 请注意上面更新方法的链接。
- 注意已经
public int updateProfile
使用,这意味着将返回已更新的行数,这可能很有用。 - ,
COL2 + "=?"
是说绑定参数,也就是?
用 String[] 的值替换 。- 多个 ? 可用于更复杂的情况,在哪种情况下是第一个 ? 将被 String[] 中的第一个元素替换,第二个 ? 将被 String[] 中的第二个元素替换,依此类推。
推荐阅读
- amazon-web-services - 在 AWS EC2 上运行 docker 映像时出现分段错误
- django - Django - 如果单个应用程序中有超过 100 个模型怎么办
- azure - Azure 逻辑应用中服务总线连接器的消息处理策略
- mongodb - Mongodb:连接被拒绝
- ios - 适用于所有 iPhone 设备的图像调整器
- javascript - JavaScript为数组中不存在的键添加零
- python - 我在使用 Telepot 运行 Telegram Bot 时遇到问题
- python - python lockf:LOCK_EX 有效,但 LOCK_SH 无效
- redux - combineReducers 破坏了简单的单元测试?初始状态行为已更改
- c - 如何将相同长度的两个数组中的公共值复制到另一个没有重复的数组中?