Código Java – Función para Convertir un ResultSet a Array


Este es el Ejemplo #15 del Topic: Programación Gráfica en Java.

Antes había explicado como retornar una consulta a base de datos mediante un CacheRowSet, Ahora explicaré otra de las formas que existe para retornar los datos pasándolos desde un ResultSet hacia un array.

La siguiente función actuará dentro del método que se encargará de establecer la conexión y retornar los datos en forma de un arreglo.

...
    private Object[][] ResultSetToArray(ResultSet rs)
    {
        Object obj[][]=null;

        try
        {

        rs.last();

        ResultSetMetaData rsmd = rs.getMetaData();

        int numCols = rsmd.getColumnCount();

        int numFils =rs.getRow();

        obj=new Object[numFils][numCols];
        int j = 0;

        rs.beforeFirst();

        while (rs.next())
        {
            for (int i=0;i<numCols;i++)
            {

                obj[j][i]=rs.getObject(i+1);
            }
            j++;

        }

        }
        catch(Exception e)
        {

        }

        return obj;
    }
...

Código de Ejemplo:

package beastieux.gui;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author beastieux
 */
public class Ejm15_ResultSetToArray extends JFrame {

    public Ejm15_ResultSetToArray()
    {
        JTable tblEjemplo = new JTable();
        JScrollPane scpEjemplo= new JScrollPane();

        //Llenamos el modelo
        DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(),
                                                             getColumnas());

        tblEjemplo.setModel(dtmEjemplo);
        scpEjemplo.add(tblEjemplo);
        this.add(scpEjemplo);
        this.setSize(500, 200);

        scpEjemplo.setViewportView(tblEjemplo);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    //Datos de las filas
    private Object[][] getFilas()
    {
         Object fila[][]=FuncionPostgreSQL("SELECT * FROM tabla");
         return fila;
    }

    //Encabezados de la tabla
    private String[] getColumnas()
    {
          String columna[]=new String[]{"Columna1","Columna2","Columna3"};
          return columna;
    }

    private Object[][] ResultSetToArray(ResultSet rs)
    {
        Object obj[][]=null;

        try
        {

        rs.last();

        ResultSetMetaData rsmd = rs.getMetaData();

        int numCols = rsmd.getColumnCount();

        int numFils =rs.getRow();

        obj=new Object[numFils][numCols];
        int j = 0;

        rs.beforeFirst();

        while (rs.next())
        {
            for (int i=0;i<numCols;i++)
            {

                obj[j][i]=rs.getObject(i+1);
            }
            j++;

        }

        }
        catch(Exception e)
        {

        }

        return obj;
    }

    private Object[][] FuncionPostgreSQL(String sql)
    {

            try
            {
                    Class.forName("org.postgresql.Driver");
                    String url = "jdbc:postgresql://127.0.0.1:5432/postgres";

                    Connection con = DriverManager.getConnection(url, "usuario","contraseña");
                    Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);

                    ResultSet rs = s.executeQuery(sql);
                    Object[][] arr = ResultSetToArray(rs);

                    s.close();
                    rs.close();
                    con.close();

                    return arr;

            }
            catch(Exception e)
            {
                   System.out.println(e.getMessage());
            }

            return null;
    }

    public static void main(String args[]) {
        Ejm15_ResultSetToArray obj = new Ejm15_ResultSetToArray();
        obj.setVisible(true);
    }

}
Anuncios

Código Java – Realizar Búsquedas en un Array


Este es el Ejemplo #10 del Topic: Programación Gráfica en Java.

De las cosas que vamos a necesitar hacer a menudo será realizar búsquedas, ya sea en un arreglo, en un resultset, listas o lo que sea que almacene datos, por ello deberemos tener a lado nuestra función de búsqueda. Para realizar búsquedas existen diversos métodos, aquí solo les doy el ejemplo con el método más sencillo el cual recorre un arreglo hasta encontrar la posición del primer elemento que coincida con lo que mandamos a buscar. Como se ve, conviene que el primer parámetro sea el arreglo y el otro sea la cadena a buscar y deben retornar un entero que sea la posición encontrada.

    public int getIndiceArray(String[] arr, String cad)
    {

        //Aqui pueden usar el método de búsqueda que necesiten.
        int index=-1;
        for(int i=0;i<arr.length;i++)
        {
            if(arr[i] == null ? cad == null : arr[i].equals(cad)){
                index=i;
                break;
            }
        }
        return index;
    }

Código de Ejemplo:

package beastieux.gui;

import javax.swing.JOptionPane;

/**
 *
 * @author beastieux
 */
public class Ejm10_BuscarEnArray {

    public int getIndiceArray(String[] arr, String cad)
    {

        //Aqui pueden usar el método de búsqueda que necesiten.
        int index=-1;
        for(int i=0;i<arr.length;i++)
        {
            if(arr[i] == null ? cad == null : arr[i].equals(cad)){
                index=i;
                break;
            }
        }
        return index;
    }

    public static void main(String args[]) {
        Ejm10_BuscarEnArray obj = new Ejm10_BuscarEnArray();
        String[] a_ejemplo=new String[]{"uno","dos","tres"};
        //Buscamos la cadena "dos", retornará su posicion en el array.
        int indice=obj.getIndiceArray(a_ejemplo, "dos");
        JOptionPane.showMessageDialog(null, indice + " - " + a_ejemplo[indice]);
    }
}

Código Java – Invertir Array


//Codificado por sAfOrAs
public class SyGVoltearArray
{
	
	static int arreglo[]=new int[25];
	static void rellenar(int x[])
	{
		for(int i=0;i<x.length;i++)		
		{
			x[i]=(int)(Math.random()*100+1);
		}
	}
	
	static void imprimir(int x[])
	{
		for(int i=0;i<x.length;i++)
		{
			System.out.println("A"+"["+i+"]="+x[i]+"\t");

		}
			System.out.println(">>>>>>>>>>>>>>>");
	
	}

	static void invertir(int arreglo[])
	{
		int ar1=0,ar2=0;
		for(int i=0;i<arreglo.length/2;i++){
			ar1=arreglo[i];ar2=arreglo[arreglo.length-1-i];
			arreglo[arreglo.length-i-1]=ar1;arreglo[i]=ar2;
		}
	}

	public static void main(String[] datos)
	{
		rellenar(arreglo);
		imprimir(arreglo);
		invertir(arreglo);
		imprimir(arreglo);
	}
}

Código Java – Llenar Array


Método 1:

//Codificado por sAfOrAs
public class SyGRellenaArray5
{

	static int a1[][]=new int[10][10];
	static int a=1;
	static void rellenaraleatorios()
	{
		for(int i=0;i<a1.length;i++)
		{
			for(int j=0;j<a1.length;j++)		
			{
				a1[i][j]=a;
				a++;
			}
		}
	}
	
	static void imprimir()
	{
		for(int i=0;i<a1.length;i++)
		{
			for(int j=0;j<a1.length;j++)		
			{	
				System.out.print(a1[i][j]+"\t");
				if(a1[i][j]%10==0 && a1[i][j]!=0)
					System.out.println("");
			}
		}
	}


	public static void main(String[] args)
	{
		rellenaraleatorios();
		imprimir();
		System.out.println("");
	}
}

Método 2:

//Codificado por sAfOrAs
public class SyGRellenaArray6
{

	static int a1[][]=new int[10][10];
	static int a=0,j=0,b=1;
	static void rellenaraleatorios()
	{
		for(int i=0;i<a1.length;i++)
		{
			for(j=0;j<a1.length;j++)		
			{
				a1[i][j]=a+b;
				a=a+b;
			}
			b++;
			a=0;
		}
	}
	
	static void imprimir()
	{
		for(int i=0;i<a1.length;i++)
		{
			for(int j=0;j<a1.length;j++)		
			{	
				System.out.print(a1[i][j]+"\t");
				if(j!=0 && j%9==0)
					System.out.println(" ");	
			}
		}
	}


	public static void main(String[] args)
	{
		rellenaraleatorios();
		imprimir();
		System.out.println("");
	}
}

Código Java – Sumar Array


//Codificado por sAfOrAs
public class SyGSumaArray
{
	static int f = 4;
	static int c = 5;
	static int [][]arreglo=new int[f][c];
	static int positiv=0;
	static int negativ=0;
	static void llenaArreglo()
	{
		for(int i=0;i<arreglo.length;i++)
			for(int j=0;j<arreglo.length;j++)
				arreglo[i][j]=(int)(Math.random()*-50+1);
	}
	
	static void sumaDeElementos()
	{

		for(int i=0;i<f;i++)
		{
			for(int j=0;j<c;j++)
			{		
				if(arreglo[i][j]>=0)
					positiv++;
				else
					negativ++;
			}
		}
		
		
	}
	
	static void imprime()
	{
		for(int i=0;i<f;i++)
		{
			for(int j=0;j<c;j++)
			{
				System.out.print("["+i+"]["+j+"] : "+arreglo[i][j]);
				System.out.println("");
			}
		}
	}

	static void mostrarElementos()
	{
		System.out.println("Positivos: "+positiv);
		System.out.println("Negativos: "+negativ);
		System.out.println("Total: "+(negativ+positiv));
	}

	public static void main(String[] args)
	{
		llenaArreglo();
		imprime();
		sumaDeElementos();
		mostrarElementos();
	}
	
}