2017-01-19 228 views
-2

DATABASE HANDLER Javaファイルエラーコード:1(SQLITE_ERROR)原因:SQL(クエリ)エラーまたはデータベースがありません。 (アンドロイド)

public class MyDbHandler extends SQLiteOpenHelper{ 

    public static final int DATABASE_VERSION =1; 
    public static final String DATABASE_NAME ="Dataa"; 
    public static final String TABLE_NAME="Dataa"; 
    public static final String CLOUMN_ID="_id"; 
    public static final String CLOUMN_FIRST_NAME="_FirstName"; 
    public static final String CLOUMN_LAST_NAME="_LastName"; 
    public static final String CLOUMN_GENDER="_Gender"; 
    public static final String CLOUMN_CITY="_City"; 

    public MyDbHandler(Context context, String name , SQLiteDatabase.CursorFactory factory, int version) { 
     super(context , DATABASE_NAME, factory,DATABASE_VERSION); 


    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     String query = "CREATE TABLE " + TABLE_NAME + "("+ 
       CLOUMN_ID +" INTEGER PRIMARY KEY AUTOINCREMENT " + 
       CLOUMN_FIRST_NAME +" TEXT " + 
       CLOUMN_LAST_NAME +" TEXT " + 
       CLOUMN_GENDER +" TEXT " + 
       CLOUMN_CITY +" TEXT " + 
       ");"; 
     db.execSQL(query); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     db.execSQL("DROP TABLE IF EXIST " + TABLE_NAME); 
     onCreate(db); 
    } 

    //Adding Record 
    public void addData(Dataa dataaa) 
    { 
     ContentValues values= new ContentValues(); 
     values.put(CLOUMN_FIRST_NAME, dataaa.get_FirstName()); 
     values.put(CLOUMN_LAST_NAME, dataaa.get_LastName()); 
     values.put(CLOUMN_GENDER, dataaa.get_Gender()); 
     values.put(CLOUMN_CITY, dataaa.getCity()); 
     SQLiteDatabase db = getWritableDatabase(); 
     db.insert(TABLE_NAME, null, values); 
     db.close(); 
    } 

    //Print 
    public String databaseToString() 
    { 
     String dbString=""; 
     SQLiteDatabase db= getWritableDatabase(); 
     String query= "SELECT * FROM " + TABLE_NAME +" WHERE 1"; 

     //cURSOR 
     Cursor c= db.rawQuery(query,null); 
     //move to first row 
     c.moveToFirst(); 

     while(!c.isAfterLast()) 
     { 

      if(c.getString(c.getColumnIndex("_FirstName"))!= null) 
      { 
       dbString +=c.getString(c.getColumnIndex("_FirstName")); 
       dbString +="\n"; 
      } 
     } 
     db.close(); 
     return dbString; 
    } 

} 

ERRORスクリーンショット

Caused by: android.database.sqlite.SQLiteException: near "_FirstName": syntax error (code 1): , while compiling: CREATE TABLE Dataa(_idINTEGER PRIMARY KEY AUTOINCREMENT _FirstName TEXT _LastName TEXT _Gender TEXT _City TEXT); 

                        Error Code : 1 (SQLITE_ERROR) 
                        Caused By : SQL(query) error or missing database. 
                        (near "_FirstName": syntax error (code 1): , while compiling: CREATE TABLE Dataa(_idINTEGER PRIMARY KEY AUTOINCREMENT _FirstName TEXT _LastName TEXT _Gender TEXT _City TEXT);) 
                        ################################################################# 
                         at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                         at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1058) 
                         at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:623) 
                         at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                         at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59) 
                         at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                         at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1812) 
                         at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1743) 
                         at com.example.useraccountname.sqli1.MyDbHandler.onCreate(MyDbHandler.java:38) 
                         at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 
                         at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
                         at com.example.useraccountname.sqli1.MyDbHandler.addData(MyDbHandler.java:56) 
                         at com.example.useraccountname.sqli1.Ma 

答えて

3

String query = "CREATE TABLE " + TABLE_NAME + "("+ 
       CLOUMN_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       CLOUMN_FIRST_NAME +" TEXT, " + 
       CLOUMN_LAST_NAME +" TEXT, " + 
       CLOUMN_GENDER +" TEXT, " + 
       CLOUMN_CITY +" TEXT " + 
       ");"; 
     db.execSQL(query); 
2

あなたのクエリを是正し、次のようにするだけTEXT後にカンマ(、)、またはあなたのデータ型を追加このように

String query = 
      "CREATE TABLE " + TABLE_NAME + " (" 
        + CLOUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT ," + CLOUMN_FIRST_NAME + " TEXT ," 
        + CLOUMN_LAST_NAME + " TEXT ," 
        + CLOUMN_GENDER + " TEXT ," 
        + CLOUMN_CITY + " TEXT" + ")"; 
        db.execSQL(query); 

次に古いアプリをアンインストールしてもう一度実行してください

関連する問題