2017-02-02 11 views
-1

私は知識のためだけに登録データベースを作成しようとしました。しかし、私のデータベースは単にデータをキャプチャすることができないようです。私は自分のコードを三重にチェックしたが、役に立たなかった。どんな助けでも大歓迎です。SQLiteにデータを入力できません

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper { 
private static final int DATABASE_VERSION = 1; 
public static final String DATABASE_NAME = "contacts.db"; 
public static final String TABLE_NAME = "contacts"; 
public static final String COLUMN_ID = "id"; 
public static final String COL_1 = "Name"; 
public static final String COL_2 = "Pass"; 
public static final String COL_3 = "email"; 
SQLiteDatabase db; 

private static final String TABLE_CREATE = "create table contacts (id integer primary key not null , " + 
     "name text not null, pass text not null, email text not null);"; 


public DatabaseHelper(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(COL_1 , c.getName()); 
    values.put(COL_2 , c.getPass()); 
    values.put(COL_3 , c.getEmail()); 

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

public String searchPass(String name) 
{ 
    db = this.getReadableDatabase(); 
    String query = "select Name, Pass from " + TABLE_NAME; 
    Cursor cursor = db.rawQuery(query , null); 
    String a, b; 
    b = "not found"; 

    if(cursor.moveToFirst()) 
    { 
     do { 
      a = cursor.getString(0); 


      if(a.equals(name)) 
      { 
       b = cursor.getString(1); 
       break; 
      } 
     } 
     while (cursor.moveToNext()); 
    } 

    return b; 

} 




@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    String query = "DROP TABLE IF EXISTS " + TABLE_NAME; 
    db.execSQL(query); 
    this.onCreate(db); 

} 
} 

Register.java

public class Register extends AppCompatActivity { 

DatabaseHelper helper = new DatabaseHelper(this); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 
} 

public void onRegisterClick(View v) 
{ 
if (v.getId()== R.id.button17){ 
    EditText name = (EditText)findViewById(R.id.editText8); 
    EditText email = (EditText)findViewById(R.id.editText9); 
    EditText pass1 = (EditText)findViewById(R.id.editText10); 
    EditText pass2 = (EditText)findViewById(R.id.editText11); 

    String namestr = name.getText().toString(); 
    String emailstr = email.getText().toString(); 
    String pass1str = pass1.getText().toString(); 
    String pass2str = pass2.getText().toString(); 

    if (!pass1str.equals(pass2str)) 
    { 
     Toast pass = Toast.makeText(Register.this , "Password don't match" , Toast.LENGTH_SHORT); 
     pass.show(); 
    } 
    else 
    { 
     Contact c = new Contact(); 
     c.setName(namestr); 
     c.setPass(pass1str); 
     c.setEmail(emailstr); 

     helper.insertContact(c); 
    } 


} 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_register, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

Contacts.java

public class Contact { 
String name,pass,email; 

public void setName(String name) 
{ 

    this.name = name; 
} 

public String getName() 
{ 

    return this.name; 
} 

public void setPass(String pass) 
{ 
    this.pass = pass; 
} 

public String getPass() 
{ 

    return this.pass; 
} 

public void setEmail(String email) 
{ 
    this.email = email; 
} 

public String getEmail() 
{ 

    return this.email; 
} 
} 
+0

お返事ありがとうございます。新しいレコードの挿入に使用されるDatabasehelper.javaのvalues.putコードはありませんか?申し訳ありません、Androidには初めてです。 –

+0

申し訳ありませんが、質問を見落としました。しかし、まだ更新のためのコードを見つけることができません。 –

+0

行db.insertが返す線量はどれですか? –

答えて

0

あなたは、データベース内の正しいデータを挿入しませんでした。 「ID」は、あなたがそれを変更したいアイテムの一意のIDです

public void updateContact(Contact c, int id) 
{ 
    db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 

    values.put(COL_1 , c.getName()); 
    values.put(COL_2 , c.getPass()); 
    values.put(COL_3 , c.getEmail()); 

    db.update(TABLE_NAME, values, "id = ? ", new String[]{Integer.toString(id)}); 
    db.close(); 
} 

:次のメソッドを追加し、連絡先を編集するには

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

    values.put(COL_1 , c.getName()); 
    values.put(COL_2 , c.getPass()); 
    values.put(COL_3 , c.getEmail()); 

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

:あなたの方法は次のようになります。

関連する問題