Несколько результатов в текстовом представлении в Android Studio с подключением к SQL Server - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно знать, как я могу пройти, и можно ли передать несколько результатов выбора на SQL Server в текстовом представлении.

Пример: у меня есть два элемента в табличных продуктах с одинаковымname, поэтому, если я выполняю выборку с именем этого продукта, он должен вернуть 2 результата.

В табличных продуктах есть 2 элемента, называемых test, поэтому, если я выполню выборку, передав параметр 'test', мой textview в androidСтудия должна вернуть два «тестовых» элемента.

package com.example.projeto;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

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

public class EntrarActivity extends AppCompatActivity {

    TextView txtRegistrar;
    TextView txtEntrar;

    EditText edtItem;
    Button btnItem;

    TextView txtView_produtos;

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

        txtView_produtos = findViewById(R.id.txtView_produtos);


        edtItem = findViewById(R.id.edtItem);
        btnItem = findViewById(R.id.btnItem);

        txtEntrar = findViewById(R.id.txtEntrar);

        txtRegistrar = findViewById(R.id.txtRegistrar);

        btnItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                agregarUsuario();

            }
        });

        txtEntrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent menuTela = new Intent(EntrarActivity.this, TesteActivity.class);
                startActivity(menuTela);
                finish();

            }
        });

        txtRegistrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Evento ao clicar no txtRegistrar ir para tela de cadastro
                Intent novaTela = new Intent(EntrarActivity.this, RegistrarActivity.class);
                startActivity(novaTela);
                finish();

            }
        });

    }

    public Connection conexionDB() {

        Connection conexion=null;

        try {

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
            conexion = DriverManager.getConnection("jdbc:jtds:sqlserver://"my-ip";databaseName="mydbname";user=sa;password="mypass";");


        }catch (Exception e) {

            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();

        }

        return conexion;
    }

    public void agregarUsuario() {



        try {

            PreparedStatement pst=conexionDB().prepareStatement("select xname from tb_product where xname= ?");
            pst.setString(1,edtItem.getText().toString());
            pst.executeQuery();
       //   int rsCount = 0;
            ResultSet rs = pst.executeQuery();

            while (rs.next()){

                rs.getString("xname");
                txtView_produtos.setText(rs.getString("xname"));

            }

         //   do {
         //       if (results) {
         //           ResultSet rs = pst.getResultSet();
         //           rsCount++;
         //           while (rs.next()){
          //              txtView_produtos.setText(rs.getString("xname"));
           //         }

          //      }

        //        results = pst.getMoreResults();
        //    }while (results);

            Toast.makeText(getApplicationContext(), "SELECT DONE", Toast.LENGTH_SHORT).show();

        }catch (SQLException e) {

            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();

        }
    }
}

Я пробовал оба эти способа, но оба способа всегда возвращают 1 элемент в результате.

пример

product
'test'

должен возвращаться вот так

product
'test'
'test'

´´´
public void agregarUsuario () {

    try {

        PreparedStatement pst=conexionDB().prepareStatement("select xdescricao from tb_produtos where xdescricao LIKE ?");
        pst.setString(1,'%' + edtItem.getText().toString() + '%');
        ResultSet rs = pst.executeQuery();

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

        while (rs.next()){

            Map<String, String> datanum = new HashMap<String, String>();
            datanum.put("A", rs.getString("xdescricao"));
            data.add(datanum);

        }

        String[] from = {"A"};
        int [] views = {R.id.txt_titulo};
        simpleAD = new SimpleAdapter(this, data,R.layout.modelo, from, views);
        listView_item.setAdapter(simpleAD);

        Toast.makeText(getApplicationContext(), "SELECT DEU CERTO", Toast.LENGTH_SHORT).show();

    }catch (SQLException e) {

        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();

    } 

´´´

это сработало, но у меня все еще есть проблема, когда return с использованием listview и simpleAdapter возвращает мне только 1 результат SELECT LIKE, имеющий более 1 элемента, для возврата в этом SELECT, где при прямом запросе с базой данных возвращает мне 5 элементов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...