2017-04-02 3 views
0

Androidスタジオが初めてです。私はコンタクトマネージャのモバイルアプリケーションを作成しています。連絡先は私のSQLiteデータベースに追加することができ、連絡先の正しい名前が表示されます。クリックすると、連絡先の名前が別のアクティビティに表示されます。私はputExtraメソッドを使用していましたが、動作しませんでした。これは、名前をクリックすると最初の活動のために私のコードです:クエリのAndroid database.sqlite.SQLiteException

lv_contactlist.setAdapter(aa_contacts); 
    lv_contactlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String Name = (lv_contactlist.getItemAtPosition(position).toString()); 
      Intent intent = new Intent(MainActivity.this, FinalActivity.class); 
      intent.putExtra("Name",Name); 
      startActivity(intent); 
     } 
    }); 

第二の活動は、この名前を受け取り、完全な連絡先情報を表示する必要があります。

java.lang.RuntimeException: Unable to start activity android.database.sqlite.SQLiteException: near "contact": syntax error (code 1): , while compiling: SELECT * contact WHERE NAME = John 
       Error Code : 1 (SQLITE_ERROR) 
       Caused By : SQL(query) error or missing database. 
       (near "contact": syntax error (code 1): , while compiling: SELECT * contact WHERE NAME = John) 

これが私のリストに表示されて、正確な名前は次のとおりです。

String Name = getIntent().getStringExtra("Name"); 
    Cursor cursor = sdb.rawQuery("SELECT * contact WHERE NAME = " + Name, null); 
    name.setText("NAME: "+cursor.getString(0)); 
    homephone.setText("HOME PHONE: "+cursor.getString(1)); 
    mobilephone.setText("MOBILE PHONE: "+cursor.getString(2)); 
    mobilephone.setText("EMAIL ADDRESS: "+cursor.getString(3)); 

デバッグ、私はエラーメッセージが表示されます:これは私のコードです。これにより、情報を第2のアクティビティに渡すputExtraメソッドまたは名前を受け取るgetStringExtraメソッドでなければならないと信じられました。おかげで、事前に

答えて

0

あなたのクエリが間違っている:

の代わりに:

Cursor cursor = sdb.rawQuery("SELECT * contact WHERE NAME = " + Name, null); 

使用:あなたは 'から' 不足している

String[] params = new String[]{ Name }; 
Cursor c = db.rawQuery("SELECT * from contact WHERE NAME = ?", params); 
+0

これは、間違っているのに役立ちます。 'sdb.rawQuery(" WHERE NAME =? "という新しいオブジェクト[] {名前}); – CommonsWare

+0

@CommonsWare sir..iはそれを更新します – rafsanahmad007

+0

ありがとう、@CommonsWareこれはまだエラーを与えています。 – Sandra123

0

。おそらくあなたの場合

SELECT * FROM table_name WHERE column = value. 

、::それはのようなものである必要があり、あなたの接続エラーlogsから

SELECT * FROM contact WHERE NAME = John 
0

、そのSQLITE ERRORようです。

Caused By : SQL(query) error or missing database. 
(near "contact": syntax error (code 1): , while compiling: SELECT * contact WHERE NAME = John) 

次のようにあなたのSQLクエリを更新します。

String Name = getIntent().getStringExtra("Name"); 
Cursor cursor = sdb.rawQuery("SELECT * FROM contact WHERE NAME = " + Name, null); 

希望これは、それが値を引用考慮していないとして〜あまりに