2012-01-16 3 views
-2

안녕하세요, 내 응용 프로그램 프로젝트에서 일하고 있습니다. 로그인 버튼을 클릭하면 오류 메시지가 나타나서 죄송합니다. 응용 프로그램이 예기치 않게 중지되었습니다. 다시 시도하십시오. 이것의 오류는 무엇입니까? 도와주세요 감사안드로이드 응용 프로그램 - 오류 발생 로깅

이 사용자의 데이터베이스에 대한 내 코드 ..

package com.gomez.android; 

import android.content.ContentValues; 
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; 

public class dbuser{ 


public static final String user_name = "username"; 
public static final String user_password = "password"; 
public static final String row_id = "_id"; 

private static final String TAG = "UdbAdapter"; 
private DatabaseHelper UdbHelper; 
private SQLiteDatabase Udb; 

/** 
* Database creation sql statement 
*/ 
private static final String DATABASE_CREATE = 
    "create table pages (_id integer primary key autoincrement, " 
    + "username text not null, password text not null);"; 

private static final String DATABASE_NAME = "UserAccount"; 
private static final String DATABASE_TABLE = "User"; 
private static final int DATABASE_VERSION = 1; 

private Context context = null; 

private static class DatabaseHelper extends SQLiteOpenHelper { 

    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     db.execSQL(DATABASE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS pages"); 
     onCreate(db); 
    } 
} 

public dbuser(Context cntxt) { 
    this.context = cntxt; 
    UdbHelper = new DatabaseHelper(context); 
} 

public void open() throws SQLException { 
    Udb = UdbHelper.getWritableDatabase(); 
} 

public void close() { 
    UdbHelper.close(); 
} 

public long createaccount(String username, String password) 
{ 
    Udb = UdbHelper.getWritableDatabase(); 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(user_name, username); 
    initialValues.put(user_password, password); 

    return Udb.insert(DATABASE_TABLE, null, initialValues); 
} 

public boolean Login(String username, String password)throws SQLException 
{ 
    Cursor mCursor = Udb.rawQuery(DATABASE_TABLE, new String[]{username,password}); 
    if (mCursor != null){ 
     if(mCursor.getCount() > 0){ 
      return true; 
     } 
    } 
    return false; 
} 

}

이었고,이 ..... 내 로그인 페이지 코드이었다

package com.gomez.android; 

import com.gomez.android.dbuser; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 



public class login extends Activity{ 
//Declare views 
private EditText uname; 
private EditText pword; 
private Button btnlogin; 
private Button btncancel; 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //set Activity Layout 
    setContentView(R.layout.login); 

    //Get EditText and Button References 
    uname = (EditText)findViewById(R.id.username); 
    pword = (EditText)findViewById(R.id.password); 
    btnlogin = (Button)findViewById(R.id.login_enter); 
    btncancel = (Button)findViewById(R.id.cancel); 

    //set Click Listener 
    btnlogin.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      //Check Login 
      final String username = uname.getText().toString(); 
      final String password = pword.getText().toString(); 


      dbuser users = new dbuser(login.this); 
      users.open(); 
      if(users.Login(username, password)){ 
        if(username.equalsIgnoreCase(username)&& password.equalsIgnoreCase(password)) 
        { 
         Toast.makeText(login.this,"Successfully Logged In", Toast.LENGTH_LONG).show(); 
         Intent i = new Intent(login.this, firstpage.class); 
         startActivity(i); 
        } 
        else{ 
         Toast.makeText(login.this,"Invalid Username/Password", Toast.LENGTH_LONG).show(); 
        } 
        users.close(); 
       } 
      } 


    }); 

    btncancel.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      //close application 
      finish(); 
     } 
    }); 
} 

}

+0

LogCat의 성능을 과소 평가하지 마십시오! – Selvin

+2

logcat을 사용하십시오. 관련 코드를 입력해야합니다. 아무도 logcat의 방향이없는 코드를 모두 읽지 않을 것입니다. –

+0

스택 추적 출력을 게시하십시오. – bschultz

답변

0

정보를 제공하지 않아 코드에 어떤 문제가 있는지 확신 할 수 없습니다. LogCat하지만 응용 프로그램을 실행할 때 getWriteableDatabase()이 캐시 된 데이터베이스를 반환 할 가능성이 있습니다 (데이터베이스를 처음으로 구현하고 테스트 할 때이 문제가 자주 발생 함).

이 문제가 발생하지 않도록하려면 Eclipse에서 응용 프로그램을 실행하기 전에 설정 -> 응용 프로그램 -> 응용 프로그램 관리 -> [응용 프로그램] -> 데이터 지우기로 이동하십시오. 이는 데이터베이스 구현/테스트의 초기 단계에서 가장 최신의 구현으로 작업 할 수있는 쉬운 방법입니다.

이것은 매우 문제가되지 않을 수도 있지만 문제가 될 것으로 예상하지 않는 것 중 하나입니다. (종종 좌절로 이어집니다) 그래서 나는 그것을 가져올 것이라고 생각했습니다.).

+0

Mr. Alex Lockwood, 여기 LogCat 정보가 있습니다 : 01-16 13 : 18 : 39.762 : D/SntpClient (68) : 요청 시간이 실패했습니다 : java.net.SocketException : 프로토콜에 의해 지원되지 않는 주소 패밀리 – jonael08

+0

감사합니다. 당신. 도움이되는 – jonael08

관련 문제