2016-12-31 8 views
0

私のアプリケーションには2つのEditTextとButtonがあります。データベースに値を挿入してチェックする方法

ボタンで、私はのEditTextから値を取得し、SQLiteのDatabse

それを挿入する]をクリックしかし、私のコードは動作しません、と私のデータベースが作成されません。

MainActivity.java:

public class MainActivity extends AppCompatActivity { 
EditText editText1,editText2; 

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

    editText1 = (EditText) findViewById(R.id.editText); 
    editText2 = (EditText) findViewById(R.id.editText2); 
    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String name = editText1.getText().toString(); 
      String family = editText2.getText().toString(); 

     } 
    }); 

} 

そしてPerson.java:

public class Person { 

private long id; 
private String name; 
private String family; 

public Person() { 
} 

public Person(String name, String family) { 
    this.name = name; 
    this.family = family; 
} 

public Person(long id, String name, String family) { 
    this.id = id; 
    this.name = name; 
    this.family = family; 
} 

public long getId() { 
    return id; 
} 

public void setId(long id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getFamily() { 
    return family; 
} 

public void setFamily(String family) { 
    this.family = family; 
} 

そしてPersonDatabaseAdapter:

public class PersonDatabaseAdapter { 

private Context context; 
private SQLiteOpenHelper sqLiteOpenHelper; 

public PersonDatabaseAdapter(Context context) { 
    this.context = context; 
    sqLiteOpenHelper = new SQLiteOpenHelper(context, "database.db", null, 1) { 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      String sql = "create table tbl_persons (id integer primary key, name text, family text)"; 
      db.execSQL(sql); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 

     } 
    }; 
} 

public long savePerson(Person person) { 
    String name = person.getName(); 
    String family = person.getFamily(); 
    long id = -1; 

    SQLiteDatabase database = null; 

    try { 
     ContentValues values = new ContentValues(); 
     values.put("name", name); 
     values.put("family", family); 

     database = sqLiteOpenHelper.getWritableDatabase(); 
     id = database.insert("tbl_persons", null, values); 
    } catch (Exception ex) { 
     Log.d("Database", "Exception:" + ex.getMessage()); 
    } finally { 
     if(database != null && database.isOpen()) { 
      database.close(); 
     } 
    } 

    return id; 
} 
+0

logcatには例外がありますか? –

+0

実際のコードがある場合、いくつかの点を考慮する必要があります。1)savePerson()メソッドの呼び出しはどこですか? 2)オンクリック方式では、名前と家族がローカルで利用されていません。 –

+0

私は上記のコードについて質問がありますが、私はここでそれを持ち出す必要がありますか? –

答えて

0

あなたのonClick方法でsavePerson関数を呼び出す必要があります。

findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String name = editText1.getText().toString(); 
     String family = editText2.getText().toString(); 
     Person person = new Person(name, family); 
     savePerson(person); 
    } 
}); 
+0

私はaboyeコードでsavePersonを使用できません。 –

+0

あなたの問題を理解できませんでした。正確に何を言っているのですか? –

+0

私はsavePerson(人)を使用します。それは赤色に変わり、「savePerson(com.packagedomain.home.packagename.Person)メソッドを解決できません」 –

関連する問題