Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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

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
Android SQlite中的语法错误_Android_Sqlite - Fatal编程技术网

Android SQlite中的语法错误

Android SQlite中的语法错误,android,sqlite,Android,Sqlite,您好,我一直在尝试在SQlite中创建几个多表并将它们链接在一起。谁能告诉我哪里出了问题?我是Java新手,希望有人能帮助我!谢谢 Error on log cat reads android.database.sqlite.SQLiteException: near "TABLEUSER": syntax error (code 1): , while compiling: CREATE TABLEUSER(COLUMNU

您好,我一直在尝试在SQlite中创建几个多表并将它们链接在一起。谁能告诉我哪里出了问题?我是Java新手,希望有人能帮助我!谢谢

      Error on log cat reads    
            android.database.sqlite.SQLiteException: near "TABLEUSER": 
        syntax error (code 1): , while compiling: 
    CREATE TABLEUSER(COLUMNUIDINTEGER PRIMARY KEY AUTOINCREMENT,COLUMN_USERNAMETEXT,
COLUMN_EMAILTEXT,FOREIGN KEY(COLUMNUID) REFERENCES   TABLESESSIONS(COLUMNSESSIONUID))
            Class is like this

            package databasepackage;

            /**
             * Importing the context functionality
             */
            import android.content.ContentValues;
            import android.content.Context;
            /**
             * Importing functionality of SQLite database
             */
            import android.database.sqlite.SQLiteDatabase;
            /**
             * Importing functionality of cursor
             */
            //import android.database.sqlite.SQLiteDatabase.CursorFactory;
            /**
             * Importing the SQlite open helper class
             */
            import android.database.sqlite.SQLiteOpenHelper;
            /**
             * Importing the functionality to allow a log to see if database has been changed/upgraded
             */
            import android.util.Log;

            /**
             * class to allow database to access tables
             * 
             * @author James
             * 
             */

            public class DatabaseHelper extends SQLiteOpenHelper {

                /**
                 * Tag to allow us to see when database has been upgraded
                 */
                public static final String TAG = "DatabaseHelper";

                /**
                 * columns of table user
                 * 
                 */
                public static final String TABLEUSER = "USER";
                public static final String COLUMNUID = "COLUMNUID";
                public static final String COLUMNUSERNAME = "COLUMN_USERNAME";
                public static final String COLUMNEMAIL="COLUMN_EMAIL";

                /**
                 * columns of table sessions
                 */
                public static final String TABLESESSIONS = "sessions";
                public static final String COLUMNSID = "sid";
                public static final String COLUMNSESSIONUID = "sessionuid";
                public static final String COLUMNSESSIONDATE = "sessiondate";

                /**
                 * columns of table session questions
                 */
                public static final String TABLESESSIONQUESTION = "sessionquestion";
                public static final String COLUMNSESSIONQUESTIONQID = "sessionquestionqid";
                public static final String COLUMNSESSIONQUESTIONSID = "sessionquestionsid";

                /**
                 * columns of table question
                 */
                public static final String TABLEQUESTION = "question";
                public static final String COLUMNQUESTIONQID = "questionqid";
                public static final String COLUMNQUESTIONSID = "sessionid";
                public static final String COLUMNQTEXT = "qtext";

                /**
                 * columns of table text entry
                 */
                public static final String TABLETEXTENTRY = "textentry";
                public static final String COLUMNTEXTENTRYQID = "textentryqid";
                public static final String COLUMNTEXTENTRYSID = "textentrysid";
                public static final String COLUMNTEXTENTRYQTEXT = "textentryqtext";
                public static final String COLUMNBLANKOPTION = "blankoption";

                /**
                 * columns of table multichoice
                 */
                public static final String TABLEMULTICHOICE = "multichoice";
                public static final String COLUMNMULTICHOICEQID = "multichoiceqid";
                public static final String COLUMNMULTICHOICESID = "multichoicesid";
                public static final String COLUMNMULTICHOICEQTEXT = "multichoiceqtext";
                public static final String COLUMNMULTICHOICEOPTA = "multichoiceopta";
                public static final String COLUMNMULTICHOICEOPTB = "multichoiceoptb";
                public static final String COLUMNMULTICHOICEOPTC = "multichoiceoptc";
                public static final String COLUMNMULTICHOICEOPTD = "multichoiceoptd";

                /**
                 * columns of table answer
                 */
                public static final String TABLEANSWER = "answer";
                public static final String COLUMNAID = "aid";
                public static final String COLUMNANSWERQID = "answerqid";
                public static final String COLUMNANSWERTEXT = "answertext";
                public static final String COLUMNISCORRECT = "iscorrect";

                /**
                 * creating the database name
                 */
                public static final String DATABASE_NAME = "project.db";
                /**
                 * setting the database version
                 */
                public static final int DATABASE_VERSION = 34;

                /**
                 * SQL statement of the user table creation
                 * 
                 */
                public static final String SQLCREATETABLEUSER = "CREATE TABLE"
                        + TABLEUSER
                        + "("
                        + COLUMNUID
                        + "INTEGER PRIMARY KEY AUTOINCREMENT,"
                        + COLUMNUSERNAME
                        + "TEXT,"
                        + COLUMNEMAIL
                        + "TEXT,"
                        + "FOREIGN KEY(COLUMNUID) REFERENCES TABLESESSIONS(COLUMNSESSIONUID)"
                        + ")";

                /**
                 * SQL statment of the sessions table creation
                 */
                public static final String SQLCREATETABLESESSIONS = "CREATE TABLE"
                        + TABLESESSIONS
                        + "("
                        + COLUMNSID
                        + "INTEGER PRIMARY KEY AUTOINCREMENT,"
                        + COLUMNSESSIONUID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNSESSIONDATE
                        + "REAL,"
                        + "FOREIGN KEY (COLUMNSID) REFERENCES TABLESESSIONQUESTION(COLUMNSESSIONQUESTIONSID)"
                        + ")";

                /**
                 * SQL statement of the sessionquestion table
                 */
                public static final String SQLCREATETABLESESSIONQUESTION = "CREATE TABLE"
                        + TABLESESSIONQUESTION
                        + "("
                        + COLUMNSESSIONQUESTIONQID
                        + "INTEGER PRIMARY KEY AUTOINCREMENT,"
                        + COLUMNSESSIONQUESTIONSID
                        + "INTEGER NOT NULL,"
                        + "FOREIGN KEY (COLUMNSESSIONQUESTIONQID) REFERENCES TABLEQUESTION (COLUMNQUESTIONQID)"
                        + ")";

                /**
                 * SQL statement of the question table
                 */
                public static final String SQLCREATETABLEQUESTION = "CREATE TABLE"
                        + TABLEQUESTION
                        + "("
                        + COLUMNQUESTIONQID
                        + "INTEGER PRIMARY KEY AUTOINCREMENT,"
                        + COLUMNQUESTIONSID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNQTEXT
                        + "TEXT NOT NULL,"
                        + "FOREIGN KEY(COLUMNQUESTIONQID) REFERENCES TABLETEXTENTRY (COLUMNTEXTENTRYQID),"
                        + "FOREIGN_KEY(COLUMNQUESTIONSID) REFERENCES TABLE_MULTICHOICE (COLUMNMULTICHOICESID)"
                        + ")";

                /**
                 * SQL statement of the text entry table
                 */
                public static final String SQLCREATETABLETEXTENTRY = "CREATE TABLE"
                        + TABLETEXTENTRY
                        + "("
                        + COLUMNTEXTENTRYQID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNTEXTENTRYSID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNTEXTENTRYQTEXT
                        + "TEXT NOT NULL,"
                        + COLUMNBLANKOPTION
                        + "TEXT NOT NULL,"
                        + "FOREIGN KEY(COLUMNTEXTENTRYQID) REFERENCES TABLE_ANSWER (COLUMNANSWERQID)"
                        + ")";

                /**
                 * SQL statement of the multichoice table
                 */
                public static final String SQLCREATETABLEMULTICHOICE = "CREATE TABLE"
                        + TABLEMULTICHOICE
                        + "("
                        + COLUMNMULTICHOICEQID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNMULTICHOICESID
                        + "INTEGER PRIMARY KEY,"
                        + COLUMNMULTICHOICEQTEXT
                        + "TEXT NOT NULL,"
                        + COLUMNMULTICHOICEOPTA
                        + "TEXT NOT NULL,"
                        + COLUMNMULTICHOICEOPTB
                        + "TEXT NOT NULL,"
                        + COLUMNMULTICHOICEOPTC
                        + "TEXT NOT NULL,"
                        + COLUMNMULTICHOICEOPTD
                        + "TEXT NOT NULL,"
                        + "FOREIGN KEY(COLUMNMULTICHOICEQID) REFERENCES TABLEANSWER (COLUMNANSWERQID)"
                        + ")";

                /**
                 * SQL statement of the answer table
                 */
                public static final String SQLCREATETABLEANSWER = "CREATE TABLE"
                        + TABLEANSWER + "(" + COLUMNAID + "INTEGER PRIMARY KEY,"
                        + COLUMNANSWERQID + "INTEGER PRIMARY KEY," + COLUMNANSWERTEXT
                        + "TEXT NOT NULL," + COLUMNISCORRECT + "INTEGER" + ")";

                /**
                 * constructor of the database helper class
                 * 
                 * @param context
                 */

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

                }

                @Override
                /**
                 * creating/executing the tables using the SQL statement
                 */
                public void onCreate(SQLiteDatabase db) {
                    db.execSQL(SQLCREATETABLEUSER);
                    db.execSQL(SQLCREATETABLESESSIONS);
                    db.execSQL(SQLCREATETABLESESSIONQUESTION);
                    db.execSQL(SQLCREATETABLEQUESTION);
                    db.execSQL(SQLCREATETABLETEXTENTRY);
                    db.execSQL(SQLCREATETABLEMULTICHOICE);
                    db.execSQL(SQLCREATETABLEANSWER);

                }

                /**
                 * Method to allow us to upgrade the table
                 */
                @Override
                public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                    Log.w(TAG, "UPGRADING THE DATABSE FROM VERSION" + oldVersion + " to"
                            + newVersion);
                    //db.execSQL("ALTER TABLE" + TABLE_USER + DATABASE_NAME + " ADD COLUMN_EMAIL TEXT");

                    // clear all data
                    //db.execSQL("DROP TABLE IF EXISTS" + TABLE_USER);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLESESSIONS);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLESESSIONQUESTION);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLEQUESTION);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLETEXTENTRY);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLEMULTICHOICE);
                    db.execSQL("DROP TABLE IF EXISTS" + TABLEANSWER);

                    // recreate the tables
                    onCreate(db);
                }/**
                Method to allow users to insert data into users table
                *
                **/
                public boolean insertData(String username,String email) {
                    SQLiteDatabase db = this.getWritableDatabase();
                    ContentValues contentValues = new ContentValues();
                    contentValues.put(COLUMNUID,COLUMNUID);
                    contentValues.put(COLUMNUSERNAME,COLUMNUSERNAME);
                    contentValues.put(COLUMNEMAIL,COLUMNEMAIL);
                    long result = db.insert(TABLEUSER,null ,contentValues);
                    if(result == -1)
                        return false;
                    else
                        return true;
                }

                /**
                 * constructor of the database helper class
                 * 
                 * @param context
                 * @param name
                 * @param factory
                 * @param version
                 */

                public DatabaseHelper(Context context, String name,
                        int version) {
                    super(context, DATABASE_NAME, null, DATABASE_VERSION);

                }

            }

标识符和关键字之间不留空格:

 CREATE TABLEUSER(COLUMNUIDINTEGER PRIMARY KEY AUTOINCREMENT,COLUMN_USERNAMETEXT,
COLUMN_EMAILTEXT,FOREIGN KEY(COLUMNUID) REFERENCES   TABLESESSIONS(COLUMNSESSIONUID))
应该是:

CREATE TABLE USER(COLUMNUID INTEGER PRIMARY KEY AUTOINCREMENT,
COLUMN_USERNAME TEXT,..

这里显然存在一个问题:创建TABLEUSER。。。。。 它必须看起来像创建表用户、、、、,,,, 尝试在创建表后放置一个空格:

      public static final String SQLCREATETABLEUSER = "CREATE TABLE " + TABLEUSER // complete the rest

对其他查询也执行同样的操作,我希望这会起作用

那么,您是否遇到了错误或其他问题?如果是这样的话,它是什么?它发生在哪条线上?