【问题标题】:Android SQLite Database: Syntax error when adding to databaseAndroid SQLite 数据库:添加到数据库时出现语法错误
【发布时间】:2014-12-31 11:31:58
【问题描述】:

您好,我在将数据添加到数据库时遇到此错误,但我不知道为什么。我认为问题出在 addData()-Method 中,但到目前为止我没有尝试修复它。

“E/SQLiteLog:(1)在“Aktivität”附近:语法错误”

还有:

"android.database.sqlite.SQLiteException: 在 "Aktivität" 附近: 语法错误 (代码 1): , 编译时: INSERT INTO MedDatenTabelle(Schmerz,Broteinheiten,Messzeit,Wasser,Diastole,Müdigkeit,Puls,Symptom,letzte Aktivität ,Gewicht,Kalorien,Bemerkungen,Systole,Temperatur,Blutzucker) 值 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"

public class DatabaseHandler extends SQLiteOpenHelper {


    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_NAME= "MedDatenManager";

    private static final String TABLE_MEDDATEN = "MedDatenTabelle";


    private static final String KEY_ID = "id";
    private static final String KEY_SYST = "Systole";
    private static final String KEY_DIAST = "Diastole";
    private static final String KEY_PULS = "Puls";
    private static final String KEY_BLUTZ = "Blutzucker";
    private static final String KEY_TEMP = "Temperatur";
    private static final String KEY_GEW = "Gewicht";
    private static final String KEY_KAL = "Kalorien";
    private static final String KEY_BE ="Broteinheiten";
    private static final String KEY_WASSER = "Wasser";
    private static final String KEY_TIME = "Messzeit";
    private static final String KEY_SCHMERZ = "Schmerz";
    private static final String KEY_MUD = "Müdigkeit";
    private static final String KEY_AKTI = "letzte Aktivität";
    private static final String KEY_SYMP = "Symptom";
    private static final String KEY_BEM = "Bemerkungen";

    public DatabaseHandler(Context context){
        super(context,DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase database) {
        String CREATE_TABLE_MEDDATEN = "CREATE TABLE " + TABLE_MEDDATEN + " ("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_SYST + " TEXT,"
            + KEY_DIAST + " TEXT," + KEY_PULS + " TEXT," + KEY_BLUTZ + " TEXT,"
            + KEY_TEMP + " TEXT," + KEY_GEW + " TEXT," + KEY_KAL + " TEXT,"
            + KEY_BE + " TEXT," + KEY_WASSER + " TEXT," + KEY_TIME + " TEXT,"
            + KEY_SCHMERZ + " TEXT," + KEY_MUD + " TEXT," + KEY_AKTI + " TEXT,"
            + KEY_SYMP + " TEXT," + KEY_BEM + " TEXT" + " )";
        database.execSQL(CREATE_TABLE_MEDDATEN);
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
        database.execSQL("DROP TABLE IF EXISTS " + TABLE_MEDDATEN);

        onCreate(database);
    }

    public void addData (MEDDATEN meddaten){
        SQLiteDatabase database = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_SCHMERZ,meddaten.getSchmerz());
        values.put(KEY_BE,meddaten.getBroteinheiten());
        values.put(KEY_TIME,meddaten.getMesszeit());
        values.put(KEY_WASSER,meddaten.getWasser());
        values.put(KEY_MUD,meddaten.getMüdigkeit());
        values.put(KEY_DIAST,meddaten.getDiastole());
        values.put(KEY_PULS,meddaten.getPuls());
        values.put(KEY_SYMP,meddaten.getSymptome());
        values.put(KEY_AKTI,meddaten.getLetzteAkt());
        values.put(KEY_GEW,meddaten.getGewicht());
        values.put(KEY_KAL,meddaten.getKalorien());
        values.put(KEY_BEM,meddaten.getBemerkungen());
        values.put(KEY_TEMP,meddaten.getTemperatur());
        values.put(KEY_SYST,meddaten.getSystole());
        values.put(KEY_BLUTZ,meddaten.getBlutzucker());

        database.insert(TABLE_MEDDATEN, null, values);
        database.close();

        }




    }


}

【问题讨论】:

  • 发布你的整个 logcat 和调用 addData 的方法。
  • 更改列名 KEY_AKTI = "letzte_Aktivität" 而不是 "letzte Aktivität"。
  • @JaiRajesh 奇怪的是,这正是我在你的评论前 3 分钟在我的回答中写的。

标签: android database sqlite android-studio syntax-error


【解决方案1】:

您的错误在这里(字段名称中的 空格,没有限定符):

private static final String KEY_AKTI = "letzte Aktivität"

试试

private static final String KEY_AKTI = "letzte_Aktivität"

改为。


如果空格是必填,请尝试:

private static final String KEY_AKTI = "'letzte Aktivität'"

或者

private static final String KEY_AKTI = "[letzte Aktivität]"

或者

private static final String KEY_AKTI = "`letzte Aktivität`"

参考:https://www.sqlite.org/lang_keywords.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多