2011-01-05 23 views
0

私はユーザー名&のパスワード登録テキストフィールドとボタンを持つログイン登録ページを行っています。編集フィールドに値を入力した後にボタンをクリックすると、DBに登録する必要があります。どうしたの?アンドロイドでDBにログイン登録

私の登録コードを以下に示します。

public class登録アクティビティ{ DBAdapter db = new DBAdapter(this); /**アクティビティが初めて作成されたときに呼び出されます。 */ @Override パブリックボイドonCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.register); 最終編集テキストset1 =(EditText)findViewById(R.id.set1); 最終編集テキストset2 =(EditText)findViewById(R.id.set2);

Button reg=(Button)findViewById(R.id.reg); 
    Button reset=(Button)findViewById(R.id.reset); 

    reg.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      String str1=set1.getText().toString(); 
      String str2=set2.getText().toString(); 
      db.open(); 
      ContentValues initialValues = new ContentValues(); 
      initialValues.put("Username",str1); 
      initialValues.put("Password",str2);    

      //long n = dbAdapter.insertRecordsInDB("user", null, initialValues); 
      db.insertTitle("login",initialValues);   
      db.close(); 
      Toast.makeText(Registration.this,"Registration done",Toast.LENGTH_SHORT).show(); 
       } 
     }); 

reset.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     set1.setText(""); 
     set2.setText(""); 
     set3.setText(""); 
     set4.setText(""); 
     set5.setText(""); 
    } 
    }); 

} }そして、私DBAdapterクラスは以下の通りである..

パブリッククラスDBAdapter {パブリック静的最終的な文字列KEY_ROWID = "_id"。 パブリックstatic final String KEY_USER = "user"; パブリックstatic final String KEY_PASS = "pass";
プライベートstatic final String TAG = "DBAdapter";私が気づい

private static final String DATABASE_NAME = "login"; 
private static final String DATABASE_TABLE = "userpass"; 
private static final int DATABASE_VERSION = 1; 

private static final String DATABASE_CREATE = 
    "create table userpass (_id integer primary key autoincrement, " 
    + "user text not null, pass text not null); "; 


private final Context context; 

private DatabaseHelper DBHelper; 
private SQLiteDatabase db; 

public DBAdapter(Context ctx) 
{ 
    this.context = ctx; 
    DBHelper = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper 
{ 
    DatabaseHelper(Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 



    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     db.execSQL(DATABASE_CREATE); 
    } 



    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
       + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS titles"); 
     onCreate(db); 
    } 

} 
    //---opens the database--- 
    public DBAdapter open() throws SQLException 
    { 
     db = DBHelper.getWritableDatabase(); 
     return this; 
    } 

    //---closes the database---  
    public void close() 
    { 
     DBHelper.close(); 
    } 

    //---insert a title into the database--- 
    public long insertTitle(String DATABASE_TABLE,String nullColumnHack,ContentValues initialValues) 
    { 
     //ContentValues initialValues = new ContentValues(); 
     //initialValues.put(KEY_USER, user); 
     //initialValues.put(KEY_PASS, pass); 
     return db.insert(DATABASE_TABLE,initialValues); 
    } 

    //---deletes a particular title--- 
    public boolean deleteTitle(long rowId) 
    { 
     return db.delete(DATABASE_TABLE, KEY_ROWID + 
       "=" + rowId, null) > 0; 
    } 

    //---retrieves all the titles--- 
    public Cursor getAllTitles() 
    { 
     return db.query(DATABASE_TABLE, new String[] { 
       KEY_ROWID, 
       KEY_USER, 
       KEY_PASS}, 
       null, 
       null, 
       null, 
       null, 
       null); 
    } 


     //---retrieves a particular title--- 
     public Cursor getTitle(long rowId) throws SQLException 
     { 
      Cursor mCursor = 
        db.query(true, DATABASE_TABLE, new String[] { 
          KEY_ROWID, 
          KEY_USER, 
          KEY_PASS, 

          }, 
          KEY_ROWID + "=" + rowId, 
          null, 
          null, 
          null, 
          null, 
          null); 
      if (mCursor != null) { 
       mCursor.moveToFirst(); 
      } 
      return mCursor; 
     } 


    //---updates a title--- 
    public boolean updateTitle(long rowId, String isbn, 
    String title, String publisher) 
    { 
     ContentValues args = new ContentValues(); 
     args.put(KEY_USER, isbn); 
     args.put(KEY_PASS, title); 

     return db.update(DATABASE_TABLE, args, 
         KEY_ROWID + "=" + rowId, null) > 0; 
    } 

} 
+0

ユーザーが登録を試みた後で、insertTitleの値をチェックしましたか?また、db.execSQL( "INSERT INTO ...")を試して、Content.Valuesをdb.insert文に渡す際に問題がないかどうかを確認することもできます。 – indyfromoz

+0

DBAdapterクラスの「挿入」メソッドで赤い線エラーが発生しました。 – sanjay

+0

DBAdpaterとDBHelperのオブジェクトはどこに作成していますか? – Ishant

答えて

2

ことの一つは、あなたのONUPGRADE機能で誤っexecSQLを呼び出すことです。あなたの命名規則によると、この声明は次のようになります:

db.execSQL("DROP TABLE IF EXISTS userpass"); 
関連する問題