datos de una SQL query, como conseguirlos?

08/10/2004 - 12:58 por Xuacu | Informe spam
Hola,

Necesito hacer una consulta a una base de datos al cargar el formulario para
comprobar que los datos no esten ya dentro de la base.
el comando que utilizo para insertar datos en la base es:

db.open()
sqlstring="insert into table (campo1, campo2, campo3.) values ('" &
campo1 & "', '" & campo2 & "',)"
dim cmdInsert as new sqlclient.sqlcommand(sqlstring,db)
cmdinsert.executenonquery()
db.close


Este no me da ningun problema, lo que no se es como asignar por ejempo a una
variable string el valor campo1 despues de buscarlo con:

db.open()
sqlstring="select campo from table where campo= '" & campo &"'"
variable=????????
db.close
 

Leer las respuestas

#1 Leonardo Azpurua
08/10/2004 - 15:37 | Informe spam
"Xuacu" escribió en el mensaje
news:
Hola,

Necesito hacer una consulta a una base de datos al cargar el formulario


para
comprobar que los datos no esten ya dentro de la base.
el comando que utilizo para insertar datos en la base es:

db.open()
sqlstring="insert into table (campo1, campo2, campo3.) values ('" &
campo1 & "', '" & campo2 & "',)"
dim cmdInsert as new sqlclient.sqlcommand(sqlstring,db)
cmdinsert.executenonquery()
db.close


Este no me da ningun problema, lo que no se es como asignar por ejempo a


una
variable string el valor campo1 despues de buscarlo con:

db.open()
sqlstring="select campo from table where campo= '" & campo &"'"
variable=????????
db.close



Hola Xuacu,

Puedes utilizar un DataTable o un DataReader.

Para abrir una DataTable debes crear un DataAdapter, así:
Dim da As New SqlDataAdapter(sqlQuery, scConnString), mDataTable As
System.Data.DataTable
mDataTable = New System.Data.DataTable
da.Fill(mDataTable)

donde sqlQuery contiene el texto de tu consulta SQL y scCOnnString es tu
cadena de conexión.

Los objetos DataTable contienen la lista Rows, donde cada entrada
corresponde a una fila del resultado. Puedes recorrerla con un iterador For
Each... Next, o con un ciclo For i = 0 To .Rows.Count - 1. Para obtener el
valor de una columna especifica puedes usar la propiedad Items del objeto
Row.

Por ejemplo:

Dim da As New SqlDataAdapter(sqlString, tuConString)
mDataTable = New System.Data.DataTable
da.Fill(mDataTable)
If mDataTable.Rows.Count > 0 Then
sCampo = mDataTable.Rows(0).Item("campo")
End If
mDataTable.Dispose()

una opción, mucho más liviana es utilizar un DataReader, así:

Dim cn As New sqlConnection(tuConString)
cn.Open()
Dim cmd As New sqlCommand
cmd.Connection = cn
cmd.CommandText = "select campo from table where campo= '" & campo &"'"
cmd.CommandType = CommandType.Text
Dim rdr As sqlDataReader = cmd.ExecuteReader()
If rdr.Read() Then
sCampo = rdr.GetValue(0)
End If
rdr.Close()
cn.Close()
cmd.Dispose()

el DataReader es el objeto más simple para leer datos. El inconveniente es
que es un objeto "conectado", entonces está consumiendo recursos del lado
del servidor mientras está abierto. Por eso debe usarse por el mínimo tiempo
posible: abres, cargas los datos y cierras.

Los DataReader se leen secuencialmente. Puedes examinar la propiedad HasRows
para determinar si esta vacío. Inicialmente no hay ningun registro activo.
El metodo .Read avanza al siguiente registro. Si el siguiente registro no
existe, devuelve False.

Para acceder al contenido de una columna del registro activo utilizas alguno
de los metodos Get<Type>(n), donde Type puede ser String, Int64 etc
(consulta la ayuda). Tambien tienes GetValue(n). <n> es el indice de la
columna, con base cero.

Salud!

Leonardo
mvp vb

Preguntas similares