2017-12-11 10 views
0

元々、データベースに追加したユーザーを登録できました。その後、データベースをチェックしたログインフォームで登録ユーザーを確認できました。ユーザーのメールアドレスとパスワードを入力してください。これは正しく行われましたが、何か問題が発生し、「ログイン」ボタンを押すたびにアプリがクラッシュします。私はこれに関連する複数の質問があることを知っていますが、私は成功していないソリューションを試しました。 助けてくれてありがとう!E/SQLiteLog:(1)そのようなテーブルがありません:

私のデータベース処理コード:

public class DBHandler extends SQLiteOpenHelper { 

public static final String DB__NAME = "ClubDB"; 
public static final int DB_VERSION=2; 
public static final String TABLE_USER="User"; 
public static final String TABLE_CLUB="Club"; 

public static final String COL_ID="ID"; 
public static final String COL_ID2="ID"; 


public static final String COL_EMAIL="Email"; 
public static final String COL_PASSWORD="Password"; 


public static final String COL_CLUBNAME="ClubName"; 
public static final String COL_CLUBADDRESS="ClubAddress"; 
public static final String COL_X="X"; 
public static final String COL_Y="Y"; 
public static final String COL_TYPE="Type"; 



public static final String COL_NAME="Name"; 
public static final String COL_SURNAME="Surname"; 
public static final String COL_ADDRESS="Address"; 
public static final String COL_SPORT="SportType"; 
public static final String COL_MOBILE="Mobile"; 
public static final String COL_POSITION="Position"; 



public DBHandler (Context context){ 
    super(context, DB__NAME, null, DB_VERSION); 
} 

public void onCreate(SQLiteDatabase db){ 

    String sqlstatement = "CREATE TABLE " + TABLE_USER + "(" + 
      COL_ID + " integer primary key autoincrement, " + 
      COL_EMAIL + " text, " + 
      COL_PASSWORD + " text, " + 
      COL_NAME + " text, " + 
      COL_SURNAME + " text, " + 
      COL_ADDRESS + " text, " + 
      COL_SPORT + " text, " + 
      COL_MOBILE + " text, " + 
      COL_POSITION + " text) "; 

    String clubstatement = "CREATE TABLE " + TABLE_CLUB + "(" + 
      COL_ID2 + " integer primary key autoincrement, " + 
      COL_CLUBNAME + " text, " + 
      COL_ADDRESS + " text, " + 
      COL_X + " double, " + 
      COL_Y + " double, " + 
      COL_TYPE + " text) "; 



    db.execSQL(sqlstatement); 




} 

public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) 
{ 
    db.execSQL("drop table if exists " + TABLE_USER); 
    db.execSQL("drop table if exists " + TABLE_CLUB); 

    onCreate(db); 
} 

public boolean addUser(String email, String password, String name, String surname, 
         String address, String sport, String mobile, String position) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_EMAIL, email); 
    contentValues.put(COL_PASSWORD, password); 
    contentValues.put(COL_NAME, name); 
    contentValues.put(COL_SURNAME, surname); 
    contentValues.put(COL_ADDRESS, address); 
    contentValues.put(COL_SPORT, sport); 
    contentValues.put(COL_MOBILE, mobile); 
    contentValues.put(COL_POSITION, position); 





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




} 

public boolean addClub(String Clubname, String Clubaddress, double x, double y, String type) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_CLUBNAME, Clubname); 
    contentValues.put(COL_CLUBADDRESS, Clubaddress); 
    contentValues.put(COL_X, x); 
    contentValues.put(COL_Y, y); 
    contentValues.put(COL_TYPE, type); 


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

} 
public void insert_User(String sqlInsert) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(sqlInsert); 
    db.close(); 
} 

public void insert_Club(String sqlInsert) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(sqlInsert); 
    db.close(); 
} 

public void update_User(String sqlUpdate){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(sqlUpdate); 
    db.close(); 
} 

public void update_Club(String sqlUpdate){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(sqlUpdate); 
    db.close(); 
} 


public ArrayList<User> selectAll_User(){ 

    String sqlQuery = "select * from " + TABLE_USER; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(sqlQuery, null); 

    ArrayList<User> users = new ArrayList<User>(); 
    while (cursor.moveToNext()) { 
     User currentUser = new User(cursor.getInt(0) , 
       cursor.getString(1) , cursor.getString(2) , cursor.getString(3) , 
       cursor.getString(4) , cursor.getString(5) , 
       cursor.getString(6) , cursor.getString(7) , cursor.getString(8) , cursor.getString(9) , 
       cursor.getString(10)); 
     users.add (currentUser); 
    } 
    cursor.close(); 
    db.close(); 
    return users; 
} 


public Cursor getAllData() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from "+TABLE_USER, null); 
    return res; 
} 

public Cursor getAllClubData() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from "+TABLE_CLUB, null); 
    return res; 
} 

}

エラーコード:

12-11 12:26:32.248 2773-2773/com.example.c14378041.clubca2 E/SQLiteLog: (1) 
no such table: User 
12-11 12:26:32.248 2773-2773/com.example.c14378041.clubca2 D/AndroidRuntime: 
Shutting down VM 
12-11 12:26:32.250 2773-2773/com.example.c14378041.clubca2 E/AndroidRuntime: 
FATAL EXCEPTION: main  
Process: com.example.c14378041.clubca2, PID: 2773 

java.lang.IllegalStateException: Could not execute method for 
android:onClick                   
at 
android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick 
(AppCompatViewInflater.java:293) 
at android.view.View.performClick(View.java:5637) 
at android.view.View$PerformClick.run(View.java:22429) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 

at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invoke(Native Method)                  
at android.view.View.performClick(View.java:5637)  
at android.view.View$PerformClick.run(View.java:22429)                      
at android.os.Handler.handleCallback(Handler.java:751)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:154)  
at android.app.ActivityThread.main(ActivityThread.java:6119)  
at java.lang.reflect.Method.invoke(Native Method)                    
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)                   
Caused by: android.database.sqlite.SQLiteException: no such table: User 
(code 1): , while compiling: select * from User                   
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 
Method)                    
at 
    android.database.sqlite.SQLiteConnection.acquirePreparedStatement 
(SQLiteConnecti 
on.java:889) 
at 
android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)                    
at 
android.database.sqlite.SQLiteDirectCursorDriver.query 
(SQLiteDirectCursorDriver 
.java:44) 
at 
android.database.sqlite.SQLiteDatabase.rawQueryWithFactory 
    (SQLiteDatabase.java:1318) 
at 
android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1257) 
at com.example.c14378041.clubca2.DBHandler.getAllData(DBHandler.java:188) 
at com.example.c14378041.clubca2.MainActivity.Ulogin(MainActivity.java:45) 
at java.lang.reflect.Method.invoke(Native Method)  
at 
android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick 
    (Ap 
     pCompatViewInflater.java:288)  
at android.view.View.performClick(View.java:5637)  
at android.view.View$PerformClick.run(View.java:22429)  
at android.os.Handler.handleCallback(Handler.java:751)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:154)  
at android.app.ActivityThread.main(ActivityThread.java:6119)                     
at java.lang.reflect.Method.invoke(Native Method)                    
at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:886)                    
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  

私は、データベースのコードを呼び出すJavaメソッド:

public class MainActivity extends AppCompatActivity { 
Button registerButton; 
DBHandler dbhandler; 
EditText email; 
EditText password; 
public static final String EXTRA_MESSAGE = "com.example.c14378041.clubca2"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button registerButton= (Button)findViewById(R.id.registerbutton); 
    email = (EditText) findViewById(R.id.emaillogin); 
    password = (EditText) findViewById(R.id.passwordlogin); 
    dbhandler = new DBHandler(this); 




} 

public void adminLogin(View view) 
{ 
    Intent intent = new Intent(this, Admin_Activity.class); 
    startActivity(intent); 
} 

public void Ulogin(View view) 
{ 


    Cursor cursor = dbhandler.getAllData(); 
    Boolean found = false; 

    while (cursor.moveToNext()){ 

     if ((cursor.getString(1).equals(email.getText().toString())) && (cursor.getString(2).equals(password.getText().toString()))) 
     { 
      Intent intent = new Intent(this, Welcome_Activity.class); 

      String message = email.getText().toString(); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      startActivity(intent); 
      found = true; 
      Toast.makeText(MainActivity.this,"User Logged in!",Toast.LENGTH_SHORT).show(); 

     } 
    } 

    if ((cursor.isAfterLast()) && !found) 
    { 
     Toast.makeText(MainActivity.this,"Username or Password incorrect",Toast.LENGTH_SHORT).show(); 
     cursor.close(); 
    } 



} 

をマイactivity_main xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.c14378041.clubca2.MainActivity"> 

    <EditText 
     android:id="@+id/passwordlogin" 
     android:layout_width="256dp" 
     android:layout_height="37dp" 
     android:ems="10" 
     android:hint="password" 
     android:inputType="textPassword" 
     android:textSize="15dp" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="222dp" 
     android:layout_marginRight="64dp" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginLeft="8dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintHorizontal_bias="1.0" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.0" /> 

    <TextView 
     android:id="@+id/Login" 
     android:layout_width="224dp" 
     android:layout_height="31dp" 
     android:text="Already a User? Login:" 
     android:textSize="20dp" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="120dp" 
     android:layout_marginLeft="30dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.409" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.031" /> 

    <TextView 
     android:id="@+id/newUserView" 
     android:layout_width="224dp" 
     android:layout_height="31dp" 
     android:text="New User? Register:" 
     android:textSize="20dp" 
     android:layout_marginLeft="16dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="262dp" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.588" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.371" /> 

    <TextView 
     android:layout_width="337dp" 
     android:layout_height="50dp" 
     android:text="Find YOUR club" 
     android:textSize="40dp" 
     android:textStyle="italic" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginBottom="361dp" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="8dp" 
     app:layout_constraintVertical_bias="0.0" 
     app:layout_constraintHorizontal_bias="1.0" 
     android:id="@+id/textView3" /> 

    <Button 
     android:id="@+id/loginbutton" 
     android:layout_width="100dp" 
     android:layout_height="36dp" 
     android:text="Login" 
     android:layout_marginTop="25dp" 
     app:layout_constraintTop_toBottomOf="@+id/Login" 
     android:layout_marginLeft="142dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.28" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     android:onClick="Ulogin"/> 

    <EditText 
     android:id="@+id/emaillogin" 
     android:layout_width="256dp" 
     android:layout_height="37dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:hint="[email protected]" 
     android:textSize="15dp" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="169dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.006" 
     android:layout_marginLeft="30dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.377" /> 

    <Button 
     android:id="@+id/registerbutton" 
     android:layout_width="143dp" 
     android:layout_height="36dp" 
     android:text="Register" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="364dp" 
     android:layout_marginLeft="121dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.184" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     android:onClick="registerUser"/> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="70dp" 
     android:layout_height="59dp" 
     app:srcCompat="@mipmap/clubicon" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="45dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintVertical_bias="0.045" /> 

    <ImageButton 
     android:id="@+id/imageButton4" 
     android:layout_width="39dp" 
     android:layout_height="36dp" 
     android:layout_marginBottom="8dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:srcCompat="@mipmap/ic_launcher_round" 
     android:layout_marginRight="8dp" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginLeft="8dp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintHorizontal_bias="1.0" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="8dp" 
     app:layout_constraintVertical_bias="1.0" 
     android:onClick="adminLogin"/> 




    </android.support.constraint.ConstraintLayout> 
+0

値を更新するも

public void onCreate(SQLiteDatabase db){ String sqlstatement = "CREATE TABLE " + TABLE_USER + "(" + COL_ID + " integer primary key autoincrement, " + COL_EMAIL + " text, " + COL_PASSWORD + " text, " + COL_NAME + " text, " + COL_SURNAME + " text, " + COL_ADDRESS + " text, " + COL_SPORT + " text, " + COL_MOBILE + " text, " + COL_POSITION + " text) "; db.execSQL(sqlstatement); } 

の下のようなのonCreate()DHelperでdb.execSQL(sqlstatement);を追加しますか? – Omi

+1

データベースコードupdated_ thanks Omi –

+0

まだ完全なクラスで更新されていません –

答えて

0

TABLE_USERのDB version

+1

おかげで解決したオミ! これまでに効果があった理由は何ですか? ありがとう! –

関連する問題