Foros del Web » Programación para mayores de 30 ;) » .NET »

MySQL query para un Array/Vector

Estas en el tema de MySQL query para un Array/Vector en el foro de .NET en Foros del Web. Hola, estoy utilizando una base de datos en MySQL junto con visual basic 2010 Quiero hacer una consulta y guardarme el resultado de la consulta ...
  #1 (permalink)  
Antiguo 08/05/2012, 18:31
 
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
MySQL query para un Array/Vector

Hola, estoy utilizando una base de datos en MySQL junto con visual basic 2010
Quiero hacer una consulta y guardarme el resultado de la consulta (solo tendrá 1 linea) en un array, pero de forma a poder leer su colunma1, y columna2 para luego pasarlas al textbox1 y el valor de la column2 al textbox2.


Estoy acostumbrado a echar datos en un DGV de esta manera:
Código:
cnString = "datasource=localhost;username=user;password=;database=database"
            SQL = "SELECT * FROM tabla WHERE codigo LIKE '%" + txtBuscar.Text() + "%'"
            conn = New MySqlConnection(cnString)

            Try
                conn.Open()
                da = New MySqlDataAdapter(SQL, conn)
                Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)
                da.Fill(ds, "table")
                DGV.DataSource = ds
                DGV.DataMember = "tabla"
            Catch ex As Common.DbException
                MsgBox(ex.ToString)
            Finally
                conn.Close()
            End Try
Pero es la primera vez que intento pasar los resultados de la consulta a un array/vector y los ejemplos que veo en internet no me son muy claros. Si alguien me puediera dar un ejemplo o enseñar un ejemplo claro le agradeceria.
  #2 (permalink)  
Antiguo 09/05/2012, 05:58
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: MySQL query para un Array/Vector

Tienes que usar los métodos que hay para acceder a los resultados directamente.

Un ejemplo:


Código VB:
Ver original
  1. Dim datos(5) as String
  2.  
  3. cnString = "datasource=localhost;username=user;password=;database=database"
  4.             SQL = "SELECT * FROM tabla WHERE codigo LIKE '%" + txtBuscar.Text() + "%'"
  5.             conn = New MySqlConnection(cnString)
  6.  
  7.  
  8.         Dim command As MySqlCommand = New SqlCommand()
  9.         command.Connection = conn
  10.         command.CommandText = SQL
  11.         command.CommandType = CommandType.Text
  12.  
  13.             Try
  14.                 conn.Open()
  15.                 Dim reader As MySqlDataReader = command.ExecuteReader()
  16.  
  17.         If reader.HasRows Then
  18.             Do While reader.Read()
  19.              For i = 0 to 5
  20.               datos(i) = reader.GetString(i)
  21.              Next i
  22.             Loop
  23.         Else
  24.             Console.WriteLine("No rows returned.")
  25.         End If
  26.             Catch ex As Common.DbException
  27.                 MsgBox(ex.ToString)
  28.             Finally
  29.                 conn.Close()
  30.             End Try

Tienes más información en la página de MSDN y en la de Mysql también
  #3 (permalink)  
Antiguo 23/07/2012, 10:20
 
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: MySQL query para un Array/Vector

gracias por la respuesta!
pero ahora tengo un problemita, quiero tener solo la primera linea, pero datos(0) siempre me devuelve la primera columna de la ultima linea.

Como puedo escoger las lineas ? o por lo menos quedarme solo con la primera ?
  #4 (permalink)  
Antiguo 23/07/2012, 11:57
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: MySQL query para un Array/Vector

En mi blog tengo un articulo que te puede servir el codigo lo explico en c# pero al final podes descargar el ejemplo en vb.net.
Guardar Datos de Consulta a una BD en Variables

Siempre lo he dicho lo mejor es trabajar con métodos o funciones así reutilizas el código.
En el articulo uso datatable(aunque también podes usar datareader).

En tu caso tendrías una función de esta forma.
Código vb.net:
Ver original
  1. Public  Function Buscar(ByVal filtro As String) As DataTable
  2.         Dim dt As New DataTable()
  3.  
  4.         cnString = "datasource=localhost;username=user;password=;database=database"
  5.  
  6.         Dim consulta As String = "SELECT * FROM tabla WHERE codigo LIKE '%'+@filtro+'%'"
  7.  
  8.         Dim comando As New MySqlCommand (consulta, cnString)
  9.         comando.Parameters.AddWithValue("@filtro", filtro)
  10.         Dim adap As New MySqlDataAdapter(comando)
  11.         adap.Fill(dt)
  12.  
  13.         Return dt
  14.     End Function
Ahi recuperarías los datos de tu consulta

Ahora para guardar los datos de la consulta en variables arias así.
Código vb.net:
Ver original
  1. Dim dt As DataTable = Buscar(textBox1.Text)
  2.         'si encuentra el dato guardo los datos en las variables
  3.         If dt.Rows.Count > 0 Then
  4.             Dim row As DataRow = dt.Rows(0)
  5.             'guardo datos en variables
  6.             apellido = Convert.ToString(row("Apellido"))
  7.             edad = Convert.ToInt32(row("Edad"))
  8.  
  9.         Else
  10.             MessageBox.Show("No Existe", "Registro")
  11.         End If

En el código guardo en 2 variables el campo apellido y edad de la consulta, ahí tu especificas las columnas que quieras recuperar.

Y si quieres guardar los datos en un array en todo caso yo te diría que mejor uses listas genéricas.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #5 (permalink)  
Antiguo 23/07/2012, 12:10
 
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 32
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: MySQL query para un Array/Vector

gracias por la ayuda a los 2! esto me sirvió ^^

Etiquetas: mysql, query, sql, tabla, textbox, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:05.