Execute Query Through Editext and Button to SQL Android

2

I need to know how I can make a query, what kind then a default query

that when I say in the edittext of my app, a name of any client the search button will bring me the names of my SQL database

for example, these two types of query

use DB_Andro;

select * from clientes where nom_cli = 'Juan'; -- Este es el nombre que supongamos digite en el edittext

-- O ASI

SELECT * FROM clientes where nom_cli LIKE 'Juan' + '%'

this is my code in the android class Ahh omit what is commented, it is not necessary in this case:

package com.sqldata.gst.appsql;


import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Created by Administrador on 05/10/2016.
 */

public class ConClientes extends MainActivity {
    Conexion conexionSQL;
    EditText txtCdCliente, txtNomCli;
    Button btnBuscar, btnRetornar;
    ProgressBar pgrCliente;
    ListView lstClientes;
    String idCliente;
    //ResultSet rs;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.con_clientes);

        conexionSQL = new Conexion();
        //txtCdCliente = (EditText) findViewById(R.id.txtCdCliente);
        txtNomCli = (EditText) findViewById(R.id.txtNomCli);
        btnBuscar = (Button) findViewById(R.id.btnBuscar);
        btnRetornar = (Button) findViewById(R.id.btnRetornar);
        pgrCliente = (ProgressBar) findViewById(R.id.pgrCliente);
        lstClientes = (ListView) findViewById(R.id.lstClientes);
        pgrCliente.setVisibility(View.GONE);
        idCliente = "";

        // Evento Ejecutar Boton
        btnBuscar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SelectClientes selectClientes = new SelectClientes();
                selectClientes.execute(""); //Cannot resolve method 'execute(java.lang.String)
            }
        });

        btnRetornar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent Productos = new Intent(getApplicationContext(), MainMenu.class);
                startActivity(Productos);
            }
        });

    }

    public class FillList extends AsyncTask<String, String, String>
    {
        String result = "";

        List<Map<String, String>> CliList = new ArrayList<Map<String, String>>();

        @Override
        protected void onPreExecute(){
            pgrCliente.setVisibility(View.VISIBLE);
        }

        @Override
        protected void onPostExecute(String r){
            pgrCliente.setVisibility(View.GONE);
            Toast.makeText(ConClientes.this, r, Toast.LENGTH_SHORT).show();

            String[] from = {"A", "B", "C"};
            int[] views = {R.id.lblClienteId, R.id.lblNomCli, R.id.lblCodCli};
            final SimpleAdapter ADA = new SimpleAdapter(ConClientes.this, CliList, R.layout.lst_cliente,
                    from, views);
            lstClientes.setAdapter(ADA);

            lstClientes.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    HashMap<String, Object> obj = (HashMap<String, Object>) ADA.getItem(arg2);
                    idCliente = (String) obj.get("A");
                    String ClienName = (String) obj.get("B");
                    //String ClienCod = (String) obj.get("C"); // Tomar en Cuenta String >> int
                    txtNomCli.setText(ClienName);
                    //txtCdCliente.setText(ClienCod);

                }
            });
        }

        @Override
        protected String doInBackground (String... params){
            try{
                Connection cnSQL = conexionSQL.CONN();
                if (cnSQL == null){
                    result = "Error en la Conexión SQL Server";
                }
                else{
                    String query = "select * from clientes";
                    PreparedStatement psSQL = cnSQL.prepareStatement(query);
                    ResultSet rsSQL = psSQL.executeQuery();

                    ArrayList data1 = new ArrayList();
                    while (rsSQL.next()){
                        Map<String, String> dataRec = new HashMap<String, String>();
                        dataRec.put("A", rsSQL.getString("idcliente"));
                        dataRec.put("B", rsSQL.getString("nom_cli"));
                        dataRec.put("C", rsSQL.getString("cod_cli"));
                        CliList.add(dataRec);
                    }
                    result = "Success";
                }
            } catch (Exception ex){
                result = "Error al Buscar Datos de la Tabla Clientes";
            }
            return result;
        }
    }

    public class SelectClientes extends AsyncTask<String, String, String>{

        String result = "";
        Boolean isSuccess = false;

        String NomCli = txtNomCli.getText().toString();
        //String CodCli = txtCdCliente.getText().toString();

        @Override //Method does not override method from its superclass
        protected void onPreExecute(){
            pgrCliente.setVisibility(View.VISIBLE);
        }

        @Override
        protected void onPostExecute(String r){
            pgrCliente.setVisibility(View.GONE);
            Toast.makeText(ConClientes.this, r, Toast.LENGTH_SHORT).show();
            if (isSuccess == true){
                FillList fillList = new FillList();
                fillList.execute("");
            }
        }

        @Override //Method does not override method from its superclass
        protected String doInBackground(String... params){
            if (NomCli.trim().equals(""))
                result = "Favor de Introducir el Codigo del Cliente";
            else {
                try{
                    Connection con = conexionSQL.CONN();
                    if (con == null){
                        result = "No Hay Datos para Mostrar";
                    } else {
                        List<Map<String, String>> CliList = new ArrayList<Map<String, String>>();

                        String[] from = {"A", "B", "C"};
                        int[] views = {R.id.lblClienteId, R.id.lblNomCli, R.id.lblCodCli};
//                        final SimpleAdapter ADA = new SimpleAdapter(ConClientes.this, CliList, R.layout.lst_cliente,
//                                from, views);
                        //lstClientes.setAdapter(ADA);

                        String query = "select * from clientes where nom_cli = '" + NomCli + "'";
                        PreparedStatement psSQL = con.prepareStatement(query);
                        ResultSet rsSQL = psSQL.executeQuery();

                        ArrayList data1 = new ArrayList();
                        while (rsSQL.next()){
                            Map<String, String> dataRec = new HashMap<String, String>();
                            dataRec.put("A", rsSQL.getString("idcliente"));
                            dataRec.put("B", rsSQL.getString("nom_cli"));
                            dataRec.put("C", rsSQL.getString("cod_cli"));
                            CliList.add(dataRec);
                        }
                        result = "Success";

//                        String query = "Select * from clientes where nom_cli =" + NomCli;
//                        PreparedStatement preparedStatement = con.prepareStatement(query);
//                        preparedStatement.executeUpdate(); // esta es la sentencia;
//                        // se pdria poner de esta forma >>>> preparedStatement.executeQuery()
                        result = "Busqueda de Datos Correcta";
                        isSuccess = true;
                    }
                } catch (Exception ex){
                    isSuccess = false;
                    result = "Verifique los Datos";
                    Log.e("Error", "Este es mi problema ahora : " + ex.getMessage());
                }
            }
           return result;
        }


    }
}

I hope you can help me these are data if they need more the table is clients fields

idcliente int (1,1) primary key
nom_cli nvarchar(50)
cod_cli nvarchar(50) //Lo puse asi porque queria, ya que admite alphanumerico ejje

Well I hope and you can help me!

    
asked by Mblack47 07.10.2016 в 21:03
source

1 answer

0

What you were doing previously is incorrect:

 String query = "select * from clientes where nom_cli = '" + NomCli + "'";

The like operator is what you should use:

String query = "Select * from clientes where nom_cli like ?";
PreparedStatement preparedStatement = con.prepareStatement(query);
preparedStatement.setString(1, "%" + NomCli + "%"); 

ResultSet rs = preparedStatement.executeQuery();
    
answered by 07.10.2016 / 21:32
source