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

Asignar resultados de consultas SQL a variables

Estas en el tema de Asignar resultados de consultas SQL a variables en el foro de .NET en Foros del Web. Bueno estoy con un problema, resulta que estoy tratando de hacer consultas a una base de datos y guardar los resultados en variables, el problema ...
  #1 (permalink)  
Antiguo 20/12/2009, 12:11
(Desactivado)
 
Fecha de Ingreso: diciembre-2009
Mensajes: 44
Antigüedad: 14 años, 4 meses
Puntos: 1
Asignar resultados de consultas SQL a variables

Bueno estoy con un problema, resulta que estoy tratando de hacer consultas a una base de datos y guardar los resultados en variables, el problema es que no estoy bien familiarizado con el tema de LOS TIPOS DE DATOS INVOLUCRADOS.
o se quiero hacer algo asi

Dim comando As SqlCommand = New SqlCommand
comando.CommandText = "select count(id) from tabla where id=1"
comando.Connection = conconexion
conconexion.Open()
Dim i As Integer
i = comando.ExecuteNonQuery()
conconexion.Close()

PERO NO FUNCIONA

Al igual que quiero hacer algo asi
Comando.commandtext="select * from tabla"
Pero no se como pasar el resultado a una variable y que tipo de varaible debe ser
  #2 (permalink)  
Antiguo 20/12/2009, 17:33
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Asignar resultados de consultas SQL a variables

Prueba usando ExecuteScalar:
Código vb.net:
Ver original
  1. Dim i As Integer
  2. i =comando. ExecuteScalar()

__________________
Eduardo Peredo
Wigoin
  #3 (permalink)  
Antiguo 20/12/2009, 19:29
(Desactivado)
 
Fecha de Ingreso: diciembre-2009
Mensajes: 44
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Asignar resultados de consultas SQL a variables

Cita:
Iniciado por eperedo Ver Mensaje
Prueba usando ExecuteScalar:
Código vb.net:
Ver original
  1. Dim i As Integer
  2. i =comando. ExecuteScalar()

Eso funciono bien,
pero ahora cuando tengo un comando, por ejemplo "select * form tabla" en donde la consulta me devolvera una tabla, como puedo almacenar el resultado de la consulta en una variable? y de que tipo seria?

Última edición por pemr_2002; 20/12/2009 a las 19:35
  #4 (permalink)  
Antiguo 20/12/2009, 21:23
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Asignar resultados de consultas SQL a variables

Una consulta de ese tipo tendrás que guardarlo en una variable de tipo DataTable puedes usar un SqlDataReader o SqlDataAdapter para eso:
Te dejo un ejm con SqlDataAdapter:
Código vb.net:
Ver original
  1. Dim cmd As New SqlCommand("Select * From tabla",conexion)
  2. Dim da As New SqlDataAdapter(cmd)
  3. Dim dt As New DataTable() 'Acá tendrás los datos de la consulta SQL
  4. da.Fill(dt)
  5. 'Esto puedes pasarlo a un DataGridView
  6. Me.DataGridView1.DataSource = dt

Ahora si quieres un valor de la tabla puedes acceder a ellos mediante las propiedades del DataTable
Código vb.net:
Ver original
  1. Dim valor As String 'El tipo de dato depende de la columna de la tabla de la BD
  2. valor = Convert.ToString(dt.Rows(0)("Nombre"))
Esto te devolverá el valor de la primera fila (por eso puse el índice cero) y de la columna Nombre. Como es un nombre declare una variable de tipo String e hice el cast correspondiente Convert.ToString.

Espero te ayude, cualquier duda me avisas
__________________
Eduardo Peredo
Wigoin
  #5 (permalink)  
Antiguo 22/12/2009, 18:09
(Desactivado)
 
Fecha de Ingreso: diciembre-2009
Mensajes: 44
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Asignar resultados de consultas SQL a variables

Cita:
Iniciado por eperedo Ver Mensaje
Una consulta de ese tipo tendrás que guardarlo en una variable de tipo DataTable puedes usar un SqlDataReader o SqlDataAdapter para eso:
Te dejo un ejm con SqlDataAdapter:
Código vb.net:
Ver original
  1. Dim cmd As New SqlCommand("Select * From tabla",conexion)
  2. Dim da As New SqlDataAdapter(cmd)
  3. Dim dt As New DataTable() 'Acá tendrás los datos de la consulta SQL
  4. da.Fill(dt)
  5. 'Esto puedes pasarlo a un DataGridView
  6. Me.DataGridView1.DataSource = dt

Ahora si quieres un valor de la tabla puedes acceder a ellos mediante las propiedades del DataTable
Código vb.net:
Ver original
  1. Dim valor As String 'El tipo de dato depende de la columna de la tabla de la BD
  2. valor = Convert.ToString(dt.Rows(0)("Nombre"))
Esto te devolverá el valor de la primera fila (por eso puse el índice cero) y de la columna Nombre. Como es un nombre declare una variable de tipo String e hice el cast correspondiente Convert.ToString.

Espero te ayude, cualquier duda me avisas


Cuando haces
#
Dim cmd As New SqlCommand("Select * From tabla",conexion)
#
Dim da As New SqlDataAdapter(cmd)
#

aca entiendo que mandas el comando (cmd) como parametro al constructor de la clase,
pero si quisiera cambiar el comando, ¿como tendria que hacer?
  #6 (permalink)  
Antiguo 23/12/2009, 06:54
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Asignar resultados de consultas SQL a variables

Aquí tienes otra opción, el código está convertido desde un código C#.

Primero se crea un metodo que se conectara a la base de datos
Código VB.NET:
Ver original
  1. Private con As New SqlConnection()
  2. Private Comando As New SqlCommand()
  3. Private CadenaCon As String
  4.  
  5. 'metodo que conecta con la base de datos, retorna un objeto conexion
  6. Public Function conectarSAS() As SqlConnection
  7.     Try
  8.         con.Close()
  9.         'se cierra cualquier conexion abierta
  10.         CadenaCon = "Server=NOMBRESERVER;Database=NOMBREDB;User ID=USUARIOID;Password=USUARIOPASS;Trusted_Connection=False"
  11.         'se crea el string de conexion
  12.         con.ConnectionString = CadenaCon
  13.         'se enctrega el string de conexion a la variable de tipo SqlConnection
  14.             'se abre la conexion
  15.         con.Open()
  16.     Catch generatedExceptionName As Exception
  17.             'si hay error se asegura que se cierre la conexion
  18.         con.Close()
  19.     End Try
  20.         'se reotrna la conexion
  21.     Return con
  22. End Function


Luego de guarda el resultado de la consulta que quieras en un dataset

Código vb.net:
Ver original
  1. Private adapter As SqlDataAdapter
  2. Public Function medicamentosTrabajador(ByVal rut As String) As DataSet
  3.     Dim ds As New DataSet()
  4.     SQL = "SELECT * FROM TABLA WHERE ... "
  5.     adapter = New SqlDataAdapter(SQL, conectarSAS())
  6.     adapter.Fill(ds, "NOMBRETABLA") 'aqui cargas el dataset
  7.     conectarSAS().Close()  
  8.     Return ds
  9. End Function



Para rescatar un dataset en un datable se hace lo siguiente y este dt lo podrás cargar en una grilla o donde quieras

Código vb.net:
Ver original
  1. Dim ds As New DataSet()
  2. Dim dt As DataTable = ds.Tables(0) ' o Dim dt As DataTable = ds.Tables("NOMBRETABLA")

saludos, espero que te sirva.
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.

Última edición por pyroCL; 23/12/2009 a las 07:00
  #7 (permalink)  
Antiguo 23/12/2009, 08:26
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Asignar resultados de consultas SQL a variables

Cita:
Cuando haces
#
Dim cmd As New SqlCommand("Select * From tabla",conexion)
#
Dim da As New SqlDataAdapter(cmd)
#

aca entiendo que mandas el comando (cmd) como parametro al constructor de la clase,
pero si quisiera cambiar el comando, ¿como tendria que hacer?
A qué te refieres con cambiar el comando? O estás hablando de cambiar la consulta SQL?
De ser así puedes usar la propiedad CommandText para indicar la instrucción SQL.
Código vb.net:
Ver original
  1. Dim cmd As New SqlCommand()
  2. cmd.connection = variable_conexion
  3. cmd.CommandText = "Select * From Otra_Tabla"

Espero te sirva
__________________
Eduardo Peredo
Wigoin

Última edición por eperedo; 23/12/2009 a las 08:37
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 22:55.