2016-06-15 13 views
0

私はdbに2つのテーブルを作成しました。 1は正常に動作しています。 TABLE_NAME2は作成中にエラーを出しています。Android:テーブルの作成中にエラーが発生しました

DatabaseHelper.java:私はデータを挿入するDatabaseHelperクラスにデータを送信しています。このページから

  public class DatabaseHelper extends SQLiteOpenHelper { 
     public static final String DATABASE_NAME = "abc.db"; 
     public static final String TABLE_NAME1 = "table1"; 
    public static final String COL2 = "col1"; 
    public static final String COL3 = "Date"; 
    public static final String COL4 = "Cost"; 
    public static final String COL5 = "loc1"; 
    public static final String COL6 = "loc2"; 
    public static final String COL7 = "Description"; 

    public static final String TABLE_NAME2 = "signup"; 
    public static final String USER_NAME = "NAME"; 
    public static final String USER_EMAIL = "EMAIL"; 
    public static final String USER_MOBILE = "MOBILE"; 
    public static final String USER_PASS = "PASSWORD"; 

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


    }@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME2 + "(" 
      + USER_NAME + "TEXT," 
      + USER_EMAIL + "TEXT," 
      + USER_MOBILE + "TEXT, " 
      + USER_PASS + "TEXT)"); 
    db.execSQL("CREATE Table " + TABLE_NAME1 + "("// + COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + COL2 + " TEXT," 
      + COL3 + " TEXT," 
      + COL4 + " TEXT," 
      + COL5 + " TEXT," 
      + COL6 + " TEXT," 
      + COL7 + " TEXT)"); 
    } 



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


} 

public boolean insertHomeDataDB(String locName, String date, String cost, String startLoc, String endLoc, String description){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL2, locName); 
    contentValues.put(COL3, date); 
    contentValues.put(COL4, cost); 
    contentValues.put(COL5, startLoc); 
    contentValues.put(COL6, endLoc); 
    contentValues.put(COL7, description); 
    //contentValues.put(COL8, userId); 

    long result = db.insert(TABLE_NAME1, null, contentValues); 
    if (result==-1){ 
     return false; 
    } 
    else 
     return true; 
} 

public boolean insertSignupDataDB(String name, String email, String mobile, String pass){ 

    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(USER_NAME, name); 
    contentValues.put(USER_EMAIL, email); 
    contentValues.put(USER_MOBILE, mobile); 
    contentValues.put(USER_PASS, pass); 

    long result = db.insert(TABLE_NAME2, null, contentValues); 
    if (result==-1){ 
     return false; 
    } 
    else 
     return true; 
} 

public Cursor getAllHomeData(SQLiteDatabase db){ 
    Cursor res; 
    String[] projection = {COL2,COL3,COL4}; 
    res = db.query(TABLE_NAME1,projection,null,null,null,null,null); 
    return res; 

} 

public Cursor getAllProfileData(SQLiteDatabase db){ 
    Cursor res; 
    String[] projection={USER_NAME,USER_EMAIL,USER_MOBILE,USER_PASS}; 
    res = db.query(TABLE_NAME2, projection,null,null,null,null,null); 
    return res; 
} 
} 

。トースト "成功サインアップ"が表示されますが、ログにエラーが表示され、LoginActivityクラスに移動していません。 MainActivityにナビゲートしています。他の部分でさえ機能していません。別のパスワードを入力すると、エラーアプリが停止します。

if(etSignPass.getText().toString().equals(etSignConPass.getText().toString())){ 

       boolean queryResult = dbHelper.insertSignupDataDB(etSignName.getText().toString(), 
         etSignEmail.getText().toString(), etSignMobile.getText().toString(), etSignPass.getText().toString()); 
       if(queryResult=true){ 
        Toast.makeText(SignUp.this, "Successfully Signed up", Toast.LENGTH_SHORT).show(); 

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
         navigateUpTo(new Intent(SignUp.this,LoginActivity.class)); 
        } 

       } 
       else{ 
        Toast.makeText(SignUp.this, "Error", Toast.LENGTH_SHORT).show(); 
       } 

      } 

      else{ 
       etSignConPass.setBackgroundColor(Color.RED); 
       onClicSignUp(); 
      } 
     } 
+0

完全なlogcatを投稿してください。 (提供された回答がすでに修正されていない限り)。ニーススポット@ヘキサフレクション! – Vucko

答えて

1
db.execSQL("CREATE TABLE " + TABLE_NAME2 + "(" 
     + USER_NAME + "TEXT," 
     + USER_EMAIL + "TEXT," 
     + USER_MOBILE + "TEXT, " 
     + USER_PASS + "TEXT)"); 
db.execSQL("CREATE Table " + TABLE_NAME1 + "("// + COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT," 
     + COL2 + " TEXT," 
     + COL3 + " TEXT," 
     + COL4 + " TEXT," 
     + COL5 + " TEXT," 
     + COL6 + " TEXT," 
     + COL7 + " TEXT)"); 

あなたは表1の作成では、テーブル2及び表1を作成するために実行しているSQLの間で非常に大きな、重要な違いがありますが、SQLは、以下の形式でCREATE TABLE table1 (col1 TEXT, ...

あなたは、テーブル2を作成するときに

しかし、あなたは、列名とTEXTの間にスペースが不足しています。 "TEXT"文字列リテラルにスペースを追加するか、可能であれば用意されたステートメントを使用してください。

関連する問題