2010-07-02 2 views
0

나는 내년에 메이저 프로젝트를하고 있고, 안드로이드와 필자는 코딩에 능숙하지 않다. 내 로그인 페이지에 도움이 필요합니다. 데이터베이스 연결 자바 파일과 같은 것을 만들었습니다.안드로이드 : 데이터베이스 연결, 데이터 확인, 로그인 페이지

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(); 
    } 


    } 

SQLite를 사용하는 사용자를 위해 이미 데이터베이스를 만들었습니다. 데이터베이스 이름은 Users이고 테이블은 User라고합니다. 테이블의 레코드는 Username, Password, LastName, FirstName입니다. 한 사용자의 정보를 데이터베이스에 삽입했습니다. 문제는 내 UserDB.java가 올바른지 아닌지입니다.

그리고 login.java도 만들었습니다. 하드 코드 된 로그인 페이지 :

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); 
} 

} 

그래서 login.java에서 데이터베이스 연결을 어떻게 적용해야하는지 알고 싶습니다. db.Open();과 같은 데이터베이스 연결을 삽입해야합니까? 나는 몇 달 전에 ASP.Net을 배웠고, 내가 배운 것들을 잊어 버렸다.

login.java에서 데이터베이스 연결을 어떻게 열고 사용자가 올바른 사용자 이름과 암호를 입력했는지 데이터베이스를 확인하는 방법은 무엇입니까? 어떤 도움에 감사드립니다

<?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> 

:

당신이 내 XML을 필요로 그냥 넣다, 여기에 코드입니다. 내가 Register.java 페이지와 같은 다른 페이지를 신청할 수 있도록 어떻게해야하는지 배우는 것이 필요하다.

-Dayne

+0

내가 만든 데이터베이스를. 데이터가 안에 있습니다. 문제는 데이터베이스에 따라 로그인 페이지를 어떻게 작동시킬 수 있습니까? 나 아직도 여기 도움이 필요해. – Dayne

+0

유효한 사용자 이름과 암호를 확인하기위한 로그인을위한 기본 데이터베이스 연결 및 SQL 문에 대한 도움이 필요하며 사용자가 존재하지 않으면 등록 할 페이지를 등록해야한다는 메시지가 사용자에게 표시됩니다. register oage, 나는 기본 SQL insert 문과 where를 적용 할 필요가있다. Sane은 로그인 페이지로갑니다. – Dayne

답변

0

첫 번째, 사용자 테이블에 기록 여부를 확인 하시겠습니까? 좋아, 할 수있어. 이클립스에서는 파일 탐색기 -> 데이터 -> 데이터 -> 패키지를 열면 (one.two라고 생각한다.) 그런 다음 클릭 아이콘은 장치에서 파일을 가져옵니다 (FDD 드라이버와 같은 아이콘). 이 파일을 열려면 SQLite Expert Professional을 설치하십시오. 알았어.

Android에서 데이터베이스를 만들려면

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

당신을 위해 도움이 희망이 사이트를 참조하십시오.

+0

Ouh yeap 나는 그 부분을 이미했다. – Dayne

0

데이터베이스의 경우 : 사용자 테이블에 자동 증가하는 기본 키가 있어야합니다. onCreate() 및 onUpgrade()에 코드를 삽입 해보십시오. 여기 예제 : 로그인을 위해

@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); 
    }` 

,이 시도 :

 @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(); 
      } 
     } 
    }); 
관련 문제