samedi 8 août 2015

Query Database using selected item from drop down spinner, Android, SQLite

Ok, I have an app that writes to and deletes from a database.. I have a 2 spinners that are generated from 2 different columns in that data base.. I want to run a query for all records matching the selected item from the given drop down spinner. As of right now everything works fine however when I select an item from the drop down, nothing happens. I know I'm missing something just not sure what or where. Please help

Here is my Dbhelper.java

package com.gamingbrothers.pat.passwordencrypter;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

//table structure
public class Dbhelper extends SQLiteOpenHelper {
public static final String DB_NAME = "LogInInfo.db";
public static final String TABLE_NAME = "LogInInfo_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "USER_NAME";
public static final String COL_3 = "USER_PASSWORD";
public static final String COL_4 = "APPLICATION";
public static final String COL_5 = "CUSTOMER";
private HashMap hp;

public Dbhelper(Context context) {
    super(context, DB_NAME, null, 1);
}


public String[] ReadFromDB(String itemSelected) {
    ArrayList temp_array = new ArrayList();
    String[] notes_array = new String[0];
    String sqlQuery = "SELECT * FROM LogInInfo where CUSTOMER = + itemSelected + "'";
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c = db.rawQuery(sqlQuery, null);

    if (c.moveToFirst()) {
        do {
            temp_array.add(c.getString(c.getColumnIndex("USER_NAME")) + "," + 
                           c.getString(c.getColumnIndex("USER_PASSWORD")) + "," + 
                           c.getString(c.getColumnIndex("APPLICATION")) + "," + 
                           c.getString(c.getColumnIndex("CUSTOMER")));

        } while (c.moveToNext());

    }


c.close();
return notes_array;
}
    @Override
    public void onCreate (SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT," +
                                                 "USER_NAME TEXT,USER_PASSWORD TEXT," +
                                                   "APPLICATION TEXT,CUSTOMER TEXT)");
}

//Update DB
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

public boolean insertData(String USER_NAME,String USER_PASSWORD,String APPLICATION,String CUSTOMER){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_2,USER_NAME);
    contentValues.put(COL_3,USER_PASSWORD);
    contentValues.put(COL_4, APPLICATION);
    contentValues.put(COL_5, CUSTOMER);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if(result == -1)
        return false;
    else
        return true;
}

//Gather Data
public Cursor getAllData() {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor result = db.rawQuery("select * from LogInInfo_table",null);
    return result;
}

//getting customers for drop down
public List<String> getAllCustomers(){
    List<String> customers = new ArrayList<String>();

    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_NAME;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToPosition(0)) {
        do {
            customers.add(cursor.getString(4));
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();

    // returning customers
    return customers;
}


//getting apps for drop down
public List<String> getAllApps(){
    List<String> apps = new ArrayList<String>();

    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_NAME;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToPosition(0)) {
        do {
            apps.add(cursor.getString(3));
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();

    // returning apps
    return apps;
}


//creating update data function
public boolean updateData(String ID,String User_Name,String Password,String Application,String Customer){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1,ID);
    contentValues.put(COL_2,User_Name);
    contentValues.put(COL_3,Password);
    contentValues.put(COL_4, Application);
    contentValues.put(COL_5,Customer);
    db.update(TABLE_NAME,contentValues, "ID = ?",new String[] {ID});
    return true;
}

//deleting data
public Integer deleteData (String ID){
    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_NAME, "ID = ?",new String[]{ID});
}
}

Here is my MainActivity.java

package com.gamingbrothers.pat.passwordencrypter;
//Created by Pat 8/6/15

import android.app.AlertDialog;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.List;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

Dbhelper myDB;
EditText editUserName, editPassword, editApplication, editID, editCustomer;
Button btnAdd;
Button btnDelete;
Button btnView;
Button btnUpdate;
Spinner spinner;
Spinner spinner2;
String itemSelected;
String[] DataToDB;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myDB = new Dbhelper(this);

    //initializing objects
    editUserName = (EditText) findViewById(R.id.editText_user);
    editPassword = (EditText) findViewById(R.id.editText_pass);
    editApplication = (EditText) findViewById(R.id.editText_app);
    editID = (EditText) findViewById(R.id.editText_id);
    editCustomer = (EditText) findViewById(R.id.editText_customer);
    btnAdd = (Button) findViewById(R.id.button_Add);
    btnDelete = (Button) findViewById(R.id.button_Delete);
    btnView = (Button) findViewById(R.id.button_View);
    btnUpdate = (Button) findViewById(R.id.button_update);
    spinner = (Spinner) findViewById(R.id.spinner);
    spinner2 = (Spinner) findViewById(R.id.spinner2);


    AddData();
    viewAll();
    UpdateData();
    DeleteData();
    loadSpinnerData();
    loadSpinner2Data();


    spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            itemSelected = spinner2.getSelectedItem().toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            itemSelected = spinner.getSelectedItem().toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });


}

public void RunDatabase(View view){
        DataToDB = myDB.ReadFromDB(itemSelected.trim());
        }


public void loadSpinner2Data() {
    //db handler
    Dbhelper db2 = new Dbhelper(getApplicationContext());

    //Spinner drop elem.
    List<String> apps = db2.getAllApps();

    //Create adapter for spinner
    ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, apps);

    // Drop down layout style - list view with radio button
    dataAdapter2
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    //attaching data adapter
    spinner2.setAdapter(dataAdapter2);
}


private void loadSpinnerData() {
    // database handler
    Dbhelper db = new Dbhelper(getApplicationContext());

    // Spinner Drop down elements
    List<String> customers = db.getAllCustomers();

    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, customers);


    // Drop down layout style - list view with radio button
    dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);

}


public void DeleteData() {
    btnDelete.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Integer deletedRows = myDB.deleteData(editID.getText().toString());
                    if(deletedRows >0)
                        Toast.makeText(MainActivity.this, "Data Deleted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not Deleted", Toast.LENGTH_LONG).show();
                }
            }
    );
}

//creating update data function
public void UpdateData() {
    btnUpdate.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isUpdated = myDB.updateData(editID.getText().toString(),
                            editUserName.getText().toString(),
                            editPassword.getText().toString(),
                            editApplication.getText().toString(),
                            editCustomer.getText().toString());
                    //Parse update completion
                    if (isUpdated == true)
                        Toast.makeText(MainActivity.this, "Data Updated", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not Updated", Toast.LENGTH_LONG).show();

                }
            });
}

//add data to database
public void AddData() {
    btnAdd.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isInserted = myDB.insertData(editUserName.getText().toString(),
                            editPassword.getText().toString(),
                            editApplication.getText().toString(),
                            editCustomer.getText().toString());
                    //parse add completion
                    if (isInserted == true)
                        Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show();
                }
            });
}

//Get results from database when button is clicked
public void viewAll() {
    btnView.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Cursor result = myDB.getAllData();
                    //Check if database is empty
                    if (result.getCount() == 0) {
                        //Show Message
                        showMessage("Error", "No Data Found");
                        return;
                    }

                    StringBuffer buffer = new StringBuffer();
                    while (result.moveToNext()) {
                        buffer.append("ID:" + result.getString(0) + "\n");
                        buffer.append("User Name:" + result.getString(1) + "\n");
                        buffer.append("Password:" + result.getString(2) + "\n");
                        buffer.append("App:" + result.getString(3) + "\n");
                        buffer.append("Customer:" + result.getString(4) + "\n\n");
                    }

                    //Show all data
                    showMessage("Data", buffer.toString());
                }
            }
    );
}

//show data
public void showMessage(String title,String Message){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(Message);
    builder.show();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

    }
}

If you need me to post my XML just ask, but I didn't think it was neccessary and I didn't post my logcat because it doesn't give me an error.

Aucun commentaire:

Enregistrer un commentaire