gpt4 book ai didi

Android:SQLiteDatabase - 没有这样的列

转载 作者:搜寻专家 更新时间:2023-11-01 07:38:47 24 4
gpt4 key购买 nike

我正在尝试研究并制作一个简单的数据库,该数据库创建一个只有一行的表。当我使用 SQLiteHelper 的“update()”方法时,我第一次看到它有效。但是,当我尝试使用 SQL 命令“UPDATE...SET”时,它会抛出一个错误“没有这样的列”

我不知道为什么我不能使用“更新...设置”命令,因为“更新”方法没有问题。如果有人很了解android SQL,你能帮帮我吗?以下是我的代码和错误消息。

代码:

public class TestDBMain extends Activity {
private final String SETTINGS_TABLE_NAME = "settings";

// Columns
private final String DEV_ID = "dev_id";
private final String SERVER_NAME = "server_name";
private final String SERVER_PORT = "server_port";
private final String SERVER_SUBFOLDER = "server_subfolder";
private final String USERNAME = "username";
private final String PASSWORD = "password";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

DB_Settings db_s = new DB_Settings(this);
db_s.deleteDBSettings();
db_s.addDBSettings(SERVER_NAME, "test_server_01");
// ERROR occurs here
db_s.addDBSettingsWithSQLCommand(SERVER_NAME, "test_server_22");
}

public class DB_Settings extends SQLiteOpenHelper {
private static final String DB_NAME = "settings.db";
private static final int DATABASE_VERSION = 1;
private String[] Settings_FROM = { _ID, DEV_ID, SERVER_NAME, SERVER_PORT, SERVER_SUBFOLDER,
USERNAME, PASSWORD};

private Context mContext;

public DB_Settings(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
mContext = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS "+SETTINGS_TABLE_NAME+"("+_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "
+DEV_ID+" VARCHAR,"
+SERVER_NAME+" VARCHAR,"
+SERVER_PORT+" INTEGER,"
+SERVER_SUBFOLDER+" VARCHAR,"
+USERNAME+" VARCHAR,"
+PASSWORD+" VARCHAR);");

initialize(db);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

public void deleteDBSettings(){
mContext.deleteDatabase(DB_NAME);
}

private void initialize(SQLiteDatabase db){
ContentValues values = new ContentValues();

values.put(DEV_ID, "1");
values.put(SERVER_NAME, "1");
values.put(SERVER_PORT, 443);
values.put(SERVER_SUBFOLDER, "1");
values.put(USERNAME, "1");
values.put(PASSWORD, "1");

db.insertOrThrow(SETTINGS_TABLE_NAME, null, values);
}

public void addDBSettings(String key, Object value){
// Insert a new record
SQLiteDatabase db = getWritableDatabase();
ContentValues table_value = new ContentValues();

if(value.getClass().equals(String.class)){
table_value.put(key, value.toString());
}
else if (value.getClass().equals(Integer.class)){
table_value.put(key, (Integer)value);
}

// add to database
db.update(SETTINGS_TABLE_NAME, table_value, "_id=1", null);
}

public void addDBSettingsWithSQLCommand(String key, Object value){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("UPDATE "+SETTINGS_TABLE_NAME
+" set "+key+" = "+value.toString()
+" where _id = 1;");
}
}

错误日志:

07-20 01:00:53.516: ERROR/AndroidRuntime(6066): Caused by: android.database.sqlite.SQLiteException: no such column: test_server_22: UPDATE settings set server_name = test_server_22 where _id = 1;
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.test.db.TestDBMain$DB_Settings.addDBSettingsWithSQLCommand(TestDBMain.java:109)
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.test.db.TestDBMain.onCreate(TestDBMain.java:35)
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-20 01:00:53.516: ERROR/AndroidRuntime(6066): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

最佳答案

要查询字符串,您必须输入 ' 和 '。试试这个

db.execSQL("UPDATE "+SETTINGS_TABLE_NAME
+" set "+key+" = '"+value.toString()
+"' where _id = 1;");

关于Android:SQLiteDatabase - 没有这样的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758210/

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