android.database.sqlite.SQLiteException:近 “)”:语法错误(代码1)

问题描述:

我检查每一件事情很多次,但我依然得到这个消息android.database.sqlite.SQLiteException:近 “)”:语法错误(代码1)

android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: CREATE TABLE location (_id INTEGER PRIMARY KEY AUTOINCREMENT, location_setting TEXT UNIQUE NOT NULL, city_name TEXT NOT NULL, coord_lat REAL NOT NULL, coord_long REAL NOT NULL, ); 

final String SQL_CREATE_WEATHER_TABLE = "CREATE TABLE " + WeatherContract.WeatherEntry.TABLE_NAME + " (" + 

      WeatherContract.WeatherEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 

      // the ID of the location entry associated with this weather data 
      WeatherContract.WeatherEntry.COLUMN_LOC_KEY + " INTEGER NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_DATE + " INTEGER NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_SHORT_DESC + " TEXT NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_WEATHER_ID + " INTEGER NOT NULL," + 

      WeatherContract.WeatherEntry.COLUMN_MIN_TEMP + " REAL NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_MAX_TEMP + " REAL NOT NULL, " + 

      WeatherContract.WeatherEntry.COLUMN_HUMIDITY + " REAL NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_PRESSURE + " REAL NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_WIND_SPEED + " REAL NOT NULL, " + 
      WeatherContract.WeatherEntry.COLUMN_DEGREES + " REAL NOT NULL, " + 

      // Set up the location column as a foreign key to location table. 
      " FOREIGN KEY (" + WeatherContract.WeatherEntry.COLUMN_LOC_KEY + ") REFERENCES " + 
      WeatherContract.LocationEntry.TABLE_NAME + " (" + WeatherContract.LocationEntry._ID + "), " + 

      // To assure the application have just one weather entry per day 
      // per location, it's created a UNIQUE constraint with REPLACE strategy 
      " UNIQUE (" + WeatherContract.WeatherEntry.COLUMN_DATE + ", " + 
      WeatherContract.WeatherEntry.COLUMN_LOC_KEY + ") ON CONFLICT REPLACE);"; 

    final String SQL_CREATE_LOCATION_TABLE = "CREATE TABLE "+ WeatherContract.LocationEntry.TABLE_NAME +" (" + 
      WeatherContract.LocationEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+ 
      WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING +" TEXT UNIQUE NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_CITY_NAME + " TEXT NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_COORD_LAT + " REAL NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_COORD_LONG+ " REAL NOT NULL, "+");"; 


    sqLiteDatabase.execSQL(SQL_CREATE_LOCATION_TABLE); 


    sqLiteDatabase.execSQL(SQL_CREATE_WEATHER_TABLE); 

它的错字,检查你的最后一行从最终

WeatherContract.LocationEntry.COLUMN_COORD_LONG+ " REAL NOT NULL, "+");"; 

删除,NOT NULL后,应该像

WeatherContract.LocationEntry.COLUMN_COORD_LONG+ " REAL NOT NULL "+");"; 

它在创建表查询时显示syntext错误消息。因为您在表的最后一个字段中添加了额外的,(coma)。 所以,从SQL_CREATE_LOCATION_TABLE删除,(coma)就像下面&再试


final String SQL_CREATE_LOCATION_TABLE = "CREATE TABLE "+ WeatherContract.LocationEntry.TABLE_NAME +" (" + 
      WeatherContract.LocationEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+ 
      WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING +" TEXT UNIQUE NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_CITY_NAME + " TEXT NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_COORD_LAT + " REAL NOT NULL, "+ 
      WeatherContract.LocationEntry.COLUMN_COORD_LONG+ " REAL NOT NULL "+");";