我需要知道如何传递,以及是否有可能在textview内的SQL Server上传递选择的多个结果。
示例:我在表产品中有两个具有相同名称的项目,因此,如果我用此产品的名称执行一次选择,则需要返回2个结果。
Table产品有2个项称为test,因此,如果我通过传递“ test”参数来执行选择,那么我在android studio中的textview需要返回两个“ test”项。
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(),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(),Toast.LENGTH_SHORT).show();
}
´´´
这行得通,但是我仍然遇到问题,使用listview和simpleAdapter的返回仅向我返回SELECT LIKE的1个结果,该结果有1个以上要在此SELECT中返回,而直接通过数据库查询可以返回5个项目