lundi 20 avril 2015

Android Application Crashing When Insert Data into SQLite

My DataBase Helper Clas

package com.example.loginfromlocal;

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 DBUserAdapter 
{ 
    public static final String KEY_ROWID = "_id";
    public static final String KEY_USERNAME= "username";
    public static final String KEY_EMAIL= "email";
    public static final String KEY_PHONE= "phone";
    public static final String KEY_PASSWORD = "password";    
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "usersdb";
    private static final String DATABASE_TABLE = "users";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table users (_id integer primary key autoincrement, "
        + "username text not null, " 
        + "password text not null, "
        + "email text not null, "
        + "phone text not null);";

    private Context context = null;  
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

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

    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 users");
            onCreate(db);
        }
    }    


    public void open() throws SQLException 
    {
        db = DBHelper.getWritableDatabase();
    }


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

    public boolean AddUser(String username, String password, String email, String phone)
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_USERNAME, username);
        initialValues.put(KEY_PASSWORD, password);
        initialValues.put(KEY_EMAIL, email);
        initialValues.put(KEY_PHONE, phone);
        db.insert(DATABASE_TABLE, null, initialValues);
        return true;

    }

    public boolean Login(String username, String password) throws SQLException
    {
        Cursor mCursor = db.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE username=? AND password=?", new String[]{username,password});
        if (mCursor != null) {           
            if(mCursor.getCount() > 0)
            {
                return true;
            }
        }
     return false;
    }
    public boolean Create() throws SQLException
    {
        db.execSQL("" + DATABASE_CREATE + ";");
        return true;
    }
    public boolean Delete() throws SQLException
    {
        db.execSQL("DROP TABLE " + DATABASE_TABLE + ";");
        return true;
    }
}

My Signup CLass

package com.example.loginfromlocal;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * Created by HackBal on 4/21/2015.
 */
public class SignupActivity extends Activity {
    String username, password, email, phone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signup);
        final EditText txtUserName = (EditText)findViewById(R.id.txtUsername);
        final EditText txtPassword = (EditText)findViewById(R.id.txtPassword);
        final EditText txtEmail = (EditText) findViewById(R.id.txtEmail);
        final EditText txtPhone = (EditText) findViewById(R.id.txtPhone);
        Button btnSignup = (Button)findViewById(R.id.btnSignup);

        btnSignup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 username = txtUserName.getText().toString();
                 password = txtPassword.getText().toString();
                 email = txtEmail.getText().toString();
                 phone = txtPhone.getText().toString();

                try{
                    if(username.length() > 0 && password.length() >0)
                    {
                        DBUserAdapter dbUser = new DBUserAdapter(SignupActivity.this);
                        dbUser.open();
                        if(dbUser.AddUser(username, password, email, phone))
                        {
                            Toast.makeText(SignupActivity.this, "Successfully Inserted", Toast.LENGTH_LONG).show();
                        }else{
                            Toast.makeText(SignupActivity.this,"Try Again", Toast.LENGTH_LONG).show();
                        }
                        dbUser.close();
                    }

                }catch(Exception e)
                {
                    Toast.makeText(SignupActivity.this,e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }

}

My Login Class

package com.example.loginfromlocal;

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

public class LoginActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        final EditText txtUserName = (EditText)findViewById(R.id.txtUsername);
        final EditText txtPassword = (EditText)findViewById(R.id.txtPassword);
        Button btnLogin = (Button)findViewById(R.id.btnLogin);
        Button btnSignup = (Button) findViewById(R.id.btnSignup);
        Button btnDel = (Button) findViewById(R.id.btnDel);
        btnLogin.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                String username = txtUserName.getText().toString();
                String password = txtPassword.getText().toString();
                try{
                    if(username.length() > 0 && password.length() >0)
                    {
                        DBUserAdapter dbUser = new DBUserAdapter(LoginActivity.this);
                        dbUser.open();

                        if(dbUser.Login(username, password))
                        {
                            Toast.makeText(LoginActivity.this,"Successfully Logged In", Toast.LENGTH_LONG).show();
                        }else{
                            Toast.makeText(LoginActivity.this,"Invalid Username/Password", Toast.LENGTH_LONG).show();
                        }
                        dbUser.close();
                    }

                }catch(Exception e)
                {
                    Toast.makeText(LoginActivity.this,e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }

        });
        btnSignup.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                try {
                    Intent intobj = new Intent(LoginActivity.this, SignupActivity.class);
                    startActivity(intobj);
                }
                catch(Exception e)
                {
                    Toast.makeText(LoginActivity.this,e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }

        });
        btnDel.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                DBUserAdapter dbUser = new DBUserAdapter(LoginActivity.this);
                dbUser.open();
                dbUser.Delete();
                dbUser.close();
            }

        });
    }
}

My Android Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://ift.tt/nIICcg"
      package="com.example.loginfromlocal"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="com.example.loginfromlocal.LoginActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.loginfromlocal.SignupActivity"
            android:label="@string/app_name">

            </activity>

    </application>
</manifest>

My LogCat

04-21 09:34:16.959    7070-7070/com.example.loginfromlocal I/Choreographer﹕ Skipped 32 frames!  The application may be doing too much work on its main thread.
04-21 09:34:17.249    7070-7070/com.example.loginfromlocal I/PGA﹕ Attempting to create new SOCKET connectionn pid = 7070, tid = 7070
04-21 09:34:17.299    7070-7070/com.example.loginfromlocal I/PGA﹕ New SOCKET connection: com.example.loginfromlocal (pid 7070, tid 7070)
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal D/AndroidRuntime﹕ Shutting down VM
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x95dc7b20)
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal I/Process﹕ Sending signal. PID: 7070 SIG: 9
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal D/AndroidRuntime﹕ procName from cmdline: com.example.loginfromlocal
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal E/AndroidRuntime﹕ in writeCrashedAppName, pkgName :com.example.loginfromlocal
04-21 09:34:32.279    7070-7070/com.example.loginfromlocal D/AndroidRuntime﹕ file written successfully with content: com.example.loginfromlocal StringBuffer : ;com.example.loginfromlocal

When Starting this application using emulator, Login Window redirect to Signup Window, Then Fill all the field and click on button, application automatically redirect to login window, And also database have no row.

Please help me?? How to resolve it

Aucun commentaire:

Enregistrer un commentaire