Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转义java ContentValues中的sqlite列名_Java_Sqlite_Content Values - Fatal编程技术网

转义java ContentValues中的sqlite列名

转义java ContentValues中的sqlite列名,java,sqlite,content-values,Java,Sqlite,Content Values,我有一个SQLite表,其中有一列名为“group”。我试过用单引号和方括号来划界。每次都会插入一个没有错误消息的“0”。至少当我不去管它时,我会收到一条错误消息: 2019-11-30 16:18:43.634 11008-11008/com.example.fitcardsworkouttracker E/sqlite数据库:插入名称时出错=炒鸡蛋热量=78组=80份=1个鸡蛋 android.database.sqlite.SQLiteException:near“group”:编译时语法

我有一个SQLite表,其中有一列名为“group”。我试过用单引号和方括号来划界。每次都会插入一个没有错误消息的“0”。至少当我不去管它时,我会收到一条错误消息:

2019-11-30 16:18:43.634 11008-11008/com.example.fitcardsworkouttracker E/sqlite数据库:插入名称时出错=炒鸡蛋热量=78组=80份=1个鸡蛋

android.database.sqlite.SQLiteException:near“group”:编译时语法错误(代码1):插入食物(名称、卡路里、组、服务)值(?、、?、?)


是一个关键字,因此如果不转义,您可能会遇到问题;例如您得到的语法错误

最好不要将关键字用于实体名称/标识符(列、表、触发器等)。否则,在可能的情况下,您将不得不转义(将名称括在[]、`、“”或“”中的一个中)


使用双引号转义列名和表名(尽管括号也是为了与SQL server兼容而起作用的,对于MySQL,双引号是标准的SQL方式)
                ContentValues contentValues = new ContentValues();
            String newGroup = (String)tvGroup.getSelectedItem();
            Cursor c = myDatabase.rawQuery("SELECT initial FROM groups WHERE name = ?", new String[] {newGroup});
            c.moveToFirst();
            Log.i("EditHelpingDialog", "initial " + c.getInt(0));
            contentValues.put("name", foodName);
            contentValues.put("serving", etServing.getText().toString());
            contentValues.put("calories", etCalories.getText().toString());
            contentValues.put("group", (byte) c.getInt(0));