package com.example.chris.thegiver;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LogIn extends AppCompatActivity implements View.OnClickListener {
private Button btnRegister2, btnLogIn;
private EditText etUser, etPass;
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
btnRegister2 = (Button) findViewById(R.id.btnRegister2);
btnLogIn= (Button) findViewById(R.id.btnLogIn);
btnRegister2.setOnClickListener(this);
}
Sanırım sorunum burası. Uygulamaya veritabanına hiç erişmiyor ve giriş yapmak için kullanıcı adı parola ile eşleşip eşleşmediğini kontrol etmem gerekiyor. Eğer parola == kullanıcı adı ise kullanıcının oturum açmasına izin verecektir. Ne yazık ki bu olmuyor.Kullanıcı adı ve parolayı bir veritabanında depolamaya çalışmak ve kullanıcı adı ve parolanın eşleşip eşleşmediğini kontrol etmek için
@Override
public void onClick(View v) {
if(v.getId() == R.id.btnRegister2){
startActivity(new Intent(LogIn.this, RegisterActivity.class));
}
if(v.getId() == R.id.btnLogIn){
EditText a = (EditText) findViewById(R.id.etUser);
String str = a.getText().toString();
EditText b = (EditText) findViewById(R.id.etPass);
String pass = b.getText().toString();
String password = helper.searchPass(str);
if(pass.equals(password)){
Intent i = new Intent(LogIn.this,HomeActivity.class);
i.putExtra("Username: ", str);
startActivity(i);
}
else{
Toast temp = Toast.makeText(LogIn.this, "Username and Password dont match!", Toast.LENGTH_SHORT);
temp.show();
}
}
}
}
VERİTABANI SINIF
public class DatabaseHelper 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 COL_ID = "id";
private static final String COL_NAME= "name";
private static final String COL_EMAIL= "email";
private static final String COL_USERNAME= "username";
private static final String COL_PASSWORD= "password";
SQLiteDatabase db;
private static final String TABLE_CREATE = "create table contacts (id integer primary key not null, name text not null," +
"email text not null, username text not null, password 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;
}
Bu yöntem veritabanına işlevsellik vermek ve yeni bir kullanıcı nesnesi
public void insertContact(Contact c){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// * means all values
String query = "select * from contacts";
Cursor cursor = db.rawQuery(query,null);
int count = cursor.getCount();
values.put(COL_ID, count);
values.put(COL_NAME,c.getName());
values.put(COL_EMAIL, c.getEmail());
values.put(COL_USERNAME, c.getUsername());
values.put(COL_PASSWORD, c.getPassword());
**// this will insert the contact object into the database**
db.insert(TABLE_NAME, null, values);
db.close();
}
herşey gidiyor olabilir Burası yöntemdir oluşturulduğunda bir kullanıcılara bilgi eklemek yanlış bu kullanıcı adı için veritabanını arar ve kullanıcı adı parola eşit olup olmadığını denetler. o zaman isnt ise b Bu kullanıcı adları tüm bilgileri veritabanına gönderir ekrana
public String searchPass(String uname){
db = this.getReadableDatabase();
String query = "select uname, pass from" + TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b = "not found";
if(cursor.moveToFirst()){
do{
//usernam
a = cursor.getString(0);
if(a.equals(uname)){
b = cursor.getString(1);
break;
}enter code here
}
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);
}
}
KAYIT SINIFI için basılacaktır.
Parola eşittir onaylıyorsa, yukarıda oluşturulan java sqlite veritabanındaki her şeyi depolayın.
Parola ve onaylama parolası eşleşmiyorsa, parolaların eşleşmediğini belirten bir toast iletisi görünecektir.
if (password.equalsIgnoreCase(confirm)) {
Contact c = new Contact(); // Uses the contact class created earlier
c.setName(name);
c.setEmail(email);
c.setUsername(user);
c.setPassword(password);
registerDB.insertContact(c);
startActivity(new Intent(RegisterActivity.this,LogIn.class));
}
else {
// Pop up message
Toast pass = Toast.makeText(RegisterActivity.this, "Passwords Dont Match!", Toast.LENGTH_SHORT);
pass.show();
}
}
}
neler var Soru – robotlos
'' burada '' searchPass() '' in içine kod girer, ya da ..? – BadCash
Maalesef hiçbir şey oturum açmaya çalıştığınızda HomeScreenActivity başlatılamıyor ve giriş kodu yok burada olması gerekiyordu çünkü LogIn sınıfında LogIn ve DataBase sınıfında problem olduğunu düşünüyorum. DataBaseHelper sınıfında olması ve sorunun arama yöntemi içinde kaldığını düşünüyorum. – Chris