android - 安卓工作室 SQLiteException : syntax error (code 1) while compiling

标签 android exception android-sqlite

我是新来的(一般来说是编程方面的),希望你能帮助我解决这个问题。当我尝试启动该应用程序时,它只是“停止工作”。 我在这里查看了所有类似的问题,但无法解决。 这是我的代码:

package com.example.me.mac_xyz;

     import android.content.Context;
     import android.database.sqlite.SQLiteDatabase;
     import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "mac.db";
public static final String TABLE_NAME = "1";
public static final String COL_1 = "NUMBER";
public static final String COL_2 = "MAC";
public static final String COL_3 = "X";
public static final String COL_4 = "Y";
public static final String COL_5 = "Z";

/* Constructor*/
public DatabaseHelper(Context context) { /*, String name,   SQLiteDatabase.CursorFactory factory, int version*/
    super(context, DATABASE_NAME, null, 1);
    SQLiteDatabase db = this.getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table" + TABLE_NAME +"(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS" +TABLE_NAME);
    onCreate(db);
}

这是在日志中:

11-12 22:34:47.706  31044-31044/com.example.me.mac_xyz E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.me.mac_xyz, PID: 31044
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.me.mac_xyz/com.example.me.mac_xyz.MainActivity}: android.database.sqlite.SQLiteException: near "table1": syntax error (code 1): , while compiling: create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.database.sqlite.SQLiteException: near "table1": syntax error (code 1): , while compiling: create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER)
        *  *  *

我做错了什么?

最佳答案

问题出在您的 SQL 语句上。这就是您的 SQL 查询在 Android 系统中的样子:

create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER). 
Change query to : 
create table table_name (NUMBER INTEGER PRIMARY KEY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER)

将您的 onCreate 更改为:

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME + 
               " (NUMBER INTEGER PRIMARY KEY, 
                 MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER);");

}

注意:表名不能为数字,因此请将其更改为有效的表名。引用:What are valid table names in SQLite?

关于android - 安卓工作室 SQLiteException : syntax error (code 1) while compiling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685977/

相关文章:

声明多个域时的 Android applink 消歧对话框

java - Hadoop:配置对象时出错

python - 如何在Python中打印异常?

java - 在 SQLite 数据库 android 中存储数据

android - 我如何在 Eclipse IDE 中查看我的 sqlite 数据库结构

java - 如何从 java 类更新 MainAcitivity 的 Searchview 和 textView 的值

java - ScrollView 总是滚动到底部

android - 后台持久服务的Activity不会被kill掉

java - 不知从何而来的电话权限?

c++ - 为什么我无法捕获此异常? (C++,SFML)