2010-07-02 6 views
0

Je suis en train de faire un projet majeur sur ma dernière année et je suis très nouveau sur Android plus je ne suis pas bon dans les codages. J'ai besoin d'aide avec ma page de connexion. J'ai créé quelque chose comme un fichier java de connexion de base de données qui est la suivante:ANDROID: Connexion à la base de données, vérifier les données, page de connexion

package one.two; 

import java.util.List; 

import android.app.ListActivity; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 
import java.util.ArrayList; 

    public class UserDB 
    { 
    public String KEY_USERNAME = "Username"; 
    public String KEY_PASSWORD = "Password"; 
    public String KEY_LNAME = "LastName"; 
    public String KEY_FNAME = "FirstName"; 

    private static final String DATABASE_NAME = "Users"; 
    private static final String DATABASE_TABLE = "User"; 

    private static final int DATABASE_VERSION = 1; 

    private static Context context; 

    private static DatabaseHelper DBHelper; 
    private static SQLiteDatabase db; 

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

    private static class DatabaseHelper extends SQLiteOpenHelper 
    { 
     DatabaseHelper(Context context) 
     { 
     super(context, "Users", null, 1); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
     { 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) 
     { 
     } 
    }//end DatabaseHelper 

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

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


    } 

Je l'ai déjà créé une base de données pour les utilisateurs en utilisant SQLite. Le nom de la base de données est Utilisateurs et la table est appelée Utilisateur. Les enregistrements à l'intérieur de la table sont Nom d'utilisateur, Mot de passe, Nom, Prénom. J'ai inséré l'information d'un utilisateur dans la base de données. Le problème est que je ne sais pas si mon UserDB.java est correct.

Et j'ai également créé login.java. Hardcoded page de connexion:

package one.two; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 

import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.GridView; 
import android.widget.ListView; 
import android.widget.TextView; 



public class Login extends Activity implements OnClickListener{ 


UserDB db = new UserDB(this); 
/** Called when the activity is first created. */ 

private EditText etUsername; 
private EditText etPassword; 
private Button btnLogin; 
//private Button btnRegister; 
private TextView lblResult; 

    @Override 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.login); 
    // Get the EditText and Button References 
     etUsername = (EditText)findViewById(R.id.usernametxt); 
     etPassword = (EditText)findViewById(R.id.passwordtxt); 
     btnLogin = (Button)findViewById(R.id.btnLogin); 
     //btnRegister = (Button)findViewById(R.id.btnRegister); 
     lblResult = (TextView)findViewById(R.id.msglbl); 

     //Cursor c = (Cursor) db.getAllTitles(); 

     Button btnArrival = (Button) findViewById(R.id.btnRegister); 
    btnArrival.setOnClickListener(this); 


    // Set Click Listener 
    btnLogin.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
    // Check Login 
    String username = etUsername.getText().toString(); 
    String password = etPassword.getText().toString(); 

    if(username.equals("guest") && password.equals("guest")){ 
    lblResult.setText("Login successful."); 
    } else { 
    lblResult.setText("Login failed. Username and/or password doesn't match."); 
    } 
} 
}); 



} 

    public void onClick(View v) 
{ 
    Intent intent = new Intent(this, DatabaseActivity.class); 
    startActivity(intent); 
} 

} 

Je veux savoir comment j'appliquer la connexion de base de données sur la login.java. Dois-je insérer une connexion à la base de données quelque chose comme db.Open() ;? J'ai étudié ASP.Net il y a quelques mois et j'oublie la plupart de ce que j'ai appris.

Alors, comment dois-je ouvrir la connexion de base de données sur login.java et comment vérifier avec la base de données si l'utilisateur entre le bon nom d'utilisateur et mot de passe?

Juste Incase vous avez besoin de mon xml, voici le code:

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout 
android:id="@+id/widget0" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background = "@drawable/image" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<TextView 
android:id="@+id/widget32" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Ferry Hub" 
android:textSize="25sp" 
android:textStyle="bold" 
android:textColor="#ff009999" 
android:layout_x="97px" 
android:layout_y="15px" 
> 
</TextView> 
<TextView 
android:id="@+id/widget35" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Login" 
android:textColor="#ff100999" 
android:layout_x="116px" 
android:layout_y="48px" 
> 
</TextView> 
<EditText 
android:layout_width="168px" 
android:layout_height="42px" 
android:text="" 
android:textSize="18sp" 
android:layout_x="133px" 
android:layout_y="146px" 
android:id="@+id/passwordtxt"> 
</EditText> 
<EditText 
android:layout_width="169px" 
android:layout_height="41px" 
android:text="" 
android:textSize="18sp" 
android:layout_x="132px" 
android:layout_y="93px" 
android:id="@+id/usernametxt"> 
</EditText> 

<TextView 
android:id="@+id/widget31" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Username:" 
android:textColor="#ff000000" 
android:layout_x="32px" 
android:layout_y="102px" 
> 
</TextView> 
<TextView 
android:id="@+id/widget32" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Password:" 
android:textColor="#ff000000" 
android:layout_x="32px" 
android:layout_y="155px" 
> 
</TextView> 

<Button 
android:id="@+id/btnLogin" 
android:layout_width="109px" 
android:layout_height="34px" 
android:text="Login" 
android:layout_x="38px" 
android:layout_y="272px" 
> 
</Button> 
<Button 
android:id="@+id/btnRegister" 
android:layout_width="110px" 
android:layout_height="35px" 
android:text="Register" 
android:layout_x="159px" 
android:layout_y="272px" 
> 
</Button> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Click 'Register' if you do not have an account." 
android:textSize="13px" 
android:textColor="#ff000000" 
android:layout_x="3px" 
android:layout_y="305px" 
android:id="@+id/msglbl"> 
</TextView> 
</AbsoluteLayout> 

Toute aide est appréciée. J'ai besoin d'apprendre à le faire afin que je puisse postuler pour d'autres pages par exemple pour la page Register.java.

-Dayne

+0

J'ai créé la base de données. Les données sont à l'intérieur. La question est comment puis-je faire fonctionner ma page de connexion en fonction de la base de données? J'ai encore besoin d'aide ici. – Dayne

+0

J'ai besoin d'aide avec la connexion de base de données de base et l'instruction sql pour me connecter pour vérifier le nom d'utilisateur et le mot de passe et si l'utilisateur n'existe pas, un message apparaîtra pour indiquer à l'utilisateur qu'il doit s'inscrire. enregistrer oage, j'ai besoin de connaître la déclaration d'insertion SQL de base et où l'appliquer. Sane va pour la page de connexion. – Dayne

Répondre

0

la première, Vous voulez vérifier si oui ou non enregistrer dans le tableau de l'utilisateur. OK tu peux. Dans Eclipse, ouvrez l'explorateur de fichiers -> data -> data -> package de votre application (je pense one.two). après cette icône de clic, tirez un fichier de l'appareil (icône comme pilote FDD). Après cela, installez SQLite Expert Professional pour ouvrir ce fichier. Ok vous le savez.

Pour rendre la base de données dans Android. Voir ce site:

http://developer.android.com/resources/tutorials/notepad/index.html

espoir utile pour vous.

+0

ouh yeap j'ai déjà fait cette partie. – Dayne

0

Pour la base de données: Vous devez avoir une clé primaire auto-incrémentée dans la table utilisateur. et essayez de mettre des codes dans onCreate() et onUpgrade(). voici par exemple:

@Override 
    public void onCreate(SQLiteDatabase db) { 
// Creating Tables 
     String CREATE_EMPLOYEES_TABLE = "CREATE TABLE " + TABLE_EMPLOYEES + "(" 
       + KEY_EMPID + " INTEGER PRIMARY KEY autoincrement," + KEY_FIRSTNAME 
       + " TEXT not null," + KEY_LASTNAME + " TEXT not null," + KEY_DEPARTMENTNAME 
       + " TEXT not null," + KEY_EMAIL + " TEXT not null," + KEY_PHONE 
       + " TEXT not null," + KEY_PASSWORD + " TEXT not null " + ")"; 
     db.execSQL(CREATE_EMPLOYEES_TABLE); 

     String CREATE_DEPARTMENTS_TABLE = "CREATE TABLE " + TABLE_DEPARTMENTS 
       + "(" + KEY_DEPARTMENTID + " INTEGER PRIMARY KEY autoincrement," 
       + KEY_DEPARTMENTNAME + " TEXT not null" 
       + ")"; 
     db.execSQL(CREATE_DEPARTMENTS_TABLE); 
    } 

// Upgrading database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_EMPLOYEES); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEPARTMENTS); 
     // Create tables again 
     onCreate(db); 
    }` 

Pour la connexion, essayez ceci:

 @Override 
     public void onClick(View v) { 
      if(et1.getText().toString().equals("admin") && 
        et2.getText().toString().equals("admin")) { 
       Toast.makeText(getApplicationContext(), 
         "Redirecting...",Toast.LENGTH_SHORT).show(); 


       Intent intent = new Intent(Login.this, AdminHome.class); 
       startActivity(intent); 
       finish(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Wrong Credentials",Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
Questions connexes