2017-06-29 7 views
-4

SQliteデータベースでサインアップアクティビティを作成しました。マークボタンを押したときにアプリケーションでランタイムエラーが発生しました。 DatabaseHelperクラスの36私はデータベースのために作成し、サインアップ活動でエラーを表示しますが、私はそれらを解決できません。すべてのヘルプやアイデアはランタイムエラー:SQLiteException:近くの "連絡先":構文エラーアプリケーションが動作を停止しました

PS(イム新しいここ
は、スタックトレース

E/SQLiteLog: (1) near "contact": syntax error 
06-29 17:48:21.680 5897-5897/kanepraktiki2017.xyz.mreprogramming.kanepraktiki E/AndroidRuntime: FATAL EXCEPTION: main 
                           Process: kanepraktiki2017.xyz.mreprogramming.kanepraktiki, PID: 5897 
                           java.lang.IllegalStateException: Could not execute method of the activity 
                            at android.view.View$1.onClick(View.java:4240) 
                            at android.view.View.performClick(View.java:5184) 
                            at android.view.View$PerformClick.run(View.java:20893) 
                            at android.os.Handler.handleCallback(Handler.java:739) 
                            at android.os.Handler.dispatchMessage(Handler.java:95) 
                            at android.os.Looper.loop(Looper.java:145) 
                            at android.app.ActivityThread.main(ActivityThread.java:5938) 
                            at java.lang.reflect.Method.invoke(Native Method) 
                            at java.lang.reflect.Method.invoke(Method.java:372) 
                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
                           Caused by: java.lang.reflect.InvocationTargetException 
                            at java.lang.reflect.Method.invoke(Native Method) 
                            at java.lang.reflect.Method.invoke(Method.java:372) 
                            at android.view.View$1.onClick(View.java:4235) 
                            at android.view.View.performClick(View.java:5184)  
                            at android.view.View$PerformClick.run(View.java:20893)  
                            at android.os.Handler.handleCallback(Handler.java:739)  
                            at android.os.Handler.dispatchMessage(Handler.java:95)  
                            at android.os.Looper.loop(Looper.java:145)  
                            at android.app.ActivityThread.main(ActivityThread.java:5938)  
                            at java.lang.reflect.Method.invoke(Native Method)  
                            at java.lang.reflect.Method.invoke(Method.java:372)  
                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)  
                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)  
                           Caused by: android.database.sqlite.SQLiteException: near "contact": syntax error (code 1): , while compiling: create contact table(id integer primary key not null , name text not null, email text not null , username text not null, password text not null); 
                            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093) 
                            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670) 
                            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:1798) 
                            at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1729) 
                            at kanepraktiki2017.xyz.mreprogramming.kanepraktiki.DabaseHelper.onCreate(DabaseHelper.java:36) 
                            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 
                            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
                            at kanepraktiki2017.xyz.mreprogramming.kanepraktiki.DabaseHelper.insertContact(DabaseHelper.java:41) 
                            at kanepraktiki2017.xyz.mreprogramming.kanepraktiki.Signup.onSignUpClick(Signup.java:49) 
                            at java.lang.reflect.Method.invoke(Native Method)  
                            at java.lang.reflect.Method.invoke(Method.java:372)  
                            at android.view.View$1.onClick(View.java:4235)  
                            at android.view.View.performClick(View.java:5184)  
                            at android.view.View$PerformClick.run(View.java:20893)  
                            at android.os.Handler.handleCallback(Handler.java:739)  
                            at android.os.Handler.dispatchMessage(Handler.java:95)  
                            at android.os.Looper.loop(Looper.java:145) 

そしてDatabaseHelper.javaあるので、長いポスト申し訳ありません、おそらく明らかなエラーアンドロイド開発中とstackoverflowの中には本当に有用であろうコード$

Public class DabaseHelper extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_name = "contacts.db"; 
private static final String TABLE_name = "contacts"; 
private static final String COLUMN_id = "id"; 
private static final String COLUMN_name = "name"; 
private static final String COLUMN_email = "email"; 
private static final String COLUMN_username = "username"; 
private static final String COLUMN_password = "password"; 
SQLiteDatabase db; 

private static final String TABLE_create = "create contact table(id integer primary key not null , " + 
     "name text not null, email text not null , username text not null, password text not null);"; 

public DabaseHelper(Context context) { 
    super(context, DATABASE_name, null, DATABASE_VERSION); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    db.execSQL(TABLE_create); 
    this.db = db; 
} 

public void insertContact(Contact c) { 
    db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 

    String query="select * from contacts"; 
    Cursor cursor=db.rawQuery(query, null); 
    int count=cursor.getCount(); 

    values.put(COLUMN_id, count); 
    values.put(COLUMN_name, c.getName()); 
    values.put(COLUMN_email, c.getEmail()); 
    values.put(COLUMN_username, c.getUsername()); 
    values.put(COLUMN_password, c.getPassword()); 

    db.insert(DATABASE_name, null, values); 
    db.close(); 
} 

public String searchpass(String username) { 
    db = this.getReadableDatabase(); 
    String query = "select username, password from" + TABLE_name; 
    Cursor cursor = db.rawQuery(query, null); 
    String a, b; 
    b = "Δεν βρέθηκε"; 

    if (cursor.moveToFirst()) { 
     do { 
      a = cursor.getString(0); 
      if (a.equals(username)) { 
       b = cursor.getString(1); 
       break; 
      } 
     } 
     while (cursor.moveToNext()); 
    } 
    return b; 
} 


@Override 
public void onUpgrade(SQLiteDatabase db, int i, int i1) { 
    String query ="Drop Table If Exists"+TABLE_name; 
    db.execSQL(query); 
    this.onCreate(db); 

} 
} 
+0

あなたの質問 – RamPrakash

+0

'問い合わせのCREATE TABLEをフォーマットしてください...'有効なSQLコマンドではありません。 –

+0

ありがとう、私はそれを修正しましたが、まだエラーが発生しました – Stefania

答えて

1

新しいテーブルを無効にするためのSQL文。キーワードtableとtablenameを切り替えることができます。これを試してください:

CREATE TABLE contact 
(
    id integer primary key not null, 
    name text not null, 
    email text not null, 
    username text not null, 
    password text not null 
); 

また、このステートメントには失敗があります。

String query="select * from contacts"; 

変数TABLE_NAMEを使用することはできますが、そこにテーブルの名前を変更する必要があります。

private static final String TABLE_name = "contact"; 

は、このようなあなたのSQLステートメントを変更します。

String query = "SELECT * FROM" + this.TABLE_name; 
+0

回答ありがとうございます。問題はまだ発生しました。 – Stefania

+0

同じエラーが出るのですか?あなたのSQL文はどうなっていますか? –

+0

はい、違いはありますが、今度は行(DabaseHelper.java:45)とサインアップクラスにエラーがあります。テーブルの連絡先を作成する(...(私は上記の私のコードでも変更しました) – Stefania

0
は、このいずれかにあなたの文を変更し

"create table contact(id integer primary key not null , " + 
     "name text not null, email text not null , username text not null, password text not null);" 
それでもエラーの変化にこの行を取得している場合:

String query="select * from contacts"; 
代わりに「連絡先テーブルを作成する(...)」それは「(...)テーブルの連絡先を作成」しなければならない

編集の10

これに

:あなたはエラーを得続ける場合

String query="select * from contact"; 

はまた、それはあなたが既に作成されたテーブルを再作成しようとしているためかもしれません。 SQL、SQLite、Andriodのデータベース接続を調べて、実際の動作を知ることができます。インターネットの調査は、これらのような高度に文書化されたトピックを理解するのを助けるのに大いに役立ちます。

+0

観測に感謝しますが、残念ながら問題は依然として – Stefania

+1

です@Stefania新しいエラーは何ですか? –

+1

単に問題があると言っても、まったく役に立たない - 正確なエラーメッセージと正確な説明で正確な問題が何であるかを知る必要がある。 – csmckelvey

関連する問題