Autor Tema: Modulo de Conexion  (Leído 12808 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Modulo de Conexion
« en: Agosto 06, 2012, 04:38:36 pm »
Buenas tardes,

He estado reventandome la cabeza y buscando ejemplos para trabajar en .Net y la verdad ya me canse de no encontrar algo con lo cual me sienta satisfecho. Quizás es porque recien agarro la herramienta de Visual Basic 2008 y esta pateandome en todos los sentidos (Al menos en lo que respecta a conectarme por BD).

En la versión 6.0 para mi era simple conectarme usando un módulo y allí mediante una función ejecutaba un comando SQL y listo, sea para Insert, Delete, Update o para listar registros. Me gustaría saber si alguien tiene una manera similar de trabajar, si existe algún ejemplito que pueda ayudarme, me gustó este tema de desarrollar ahora en .Net y bueno espero lograr aprender un poco más porque la verdad me trae de cabeza.

Sin más, quedo atento a sus comentarios.  ;D
Miguel Núñez.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Modulo de Conexion
« Respuesta #1 en: Agosto 06, 2012, 05:27:23 pm »
Que BD queres conectar. Si es MySQL podes mirar el ejemplo que subi el de MB-CONTA. Lo primero es que tenes que agregar la referencia del conector de la BD.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Modulo de Conexion
« Respuesta #2 en: Agosto 06, 2012, 05:37:56 pm »
Si es Access podes Hacer asi:

En un Modulo.

Código: (VB) [Seleccionar]
Imports System.Data
Imports System.Data.OleDb

Module Module1
    Public strSQL As String         'Para hacer consultas
    Public strQuery As String       'Para hacer los ABM
    Public strConexion As New OleDbConnection
    Public strComando As New OleDbCommand
    Public sqlAdapter As New OleDbDataAdapter
    Public sqlReader As OleDbDataReader
    Public strTransac As OleDbTransaction
    Public P01, P02, P03 As String
    Public Sub ConectarAcess()
        Try
            If strConexion.State = ConnectionState.Closed Then
                strConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\xxx\Database1.mdb; User Id=admin;Password=;"
                strConexion.Open()
                strComando.Connection = strConexion
            End If
        Catch ex As Exception
            MsgBox(ex.Source & "; " & ex.Message, MsgBoxStyle.Critical, "Ocurrió un error")
        End Try
    End Sub
End Module


En un Form muesta como hacer un insert into y recuperar los datos guardados de la BD.

Código: (VB) [Seleccionar]
Imports System.Data
Imports System.Data.OleDb

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call ConectarAcess()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'Esto es para hacer un insert into
        Try
            P01 = "'HOLA'"
            P02 = "'MUNDO'"
            strSQL = "INSERT INTO nfactura (numero,tipo) VALUES (" & P01 & "," & P02 & ")"
            strComando.CommandText = strSQL
            strComando.ExecuteNonQuery()
            strTransac.Commit()
        Catch ex As Exception
            MsgBox(ex.Message)
         End Try
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        'Esto es para recuperar datos de la BD
        Try
            strSQL = "SELECT * FROM Clientes"
            strComando = New OleDbCommand(strSQL, strConexion)
            sqlReader = strComando.ExecuteReader
            While sqlReader.Read
                MsgBox(sqlReader("id").ToString)
            End While
            sqlReader.Close()
        Catch ex As Exception
            MsgBox(ex.Source & "; " & ex.Message, MsgBoxStyle.Critical, "Ocurrió un error")
        End Try
    End Sub
End Class


« última modificación: Agosto 06, 2012, 05:40:28 pm por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #3 en: Agosto 06, 2012, 05:56:36 pm »
esta noche estoy subiendo el ejemplo en 3 capas, ya lo tengo terminado.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Modulo de Conexion
« Respuesta #4 en: Agosto 06, 2012, 06:09:22 pm »
Bien ahí seba  8) 8) 8) 8) ;D ;D ;D
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Modulo de Conexion
« Respuesta #5 en: Agosto 07, 2012, 01:50:30 am »
esta noche estoy subiendo el ejemplo en 3 capas, ya lo tengo terminado.

Excelente, aunque como posteaste en el foro de .Net supongo que lo estará hecho con .Net y no con VB6 y en ese caso me lo perderé, sera un motivo mas para estudiar .Net, aunque actualmente y por unos meses mas estoy en otros temas.

Igual, bien por ello.
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Modulo de Conexion
« Respuesta #6 en: Septiembre 01, 2012, 01:50:33 am »
Ssccann43 Viejo amigo, yo conozco un metodo de trabaja en VB.NET 2010 que se acopla a tu forma de trabajo, incluso y maravillosamente es de poco código y bien estructurado, tomando en cuenta que te gusta escribir sentencias en SQL (las cuales tuve que aprender bien para trabajar así) La verdad es que despues de trabajar conexiones a código en vb6 uno se acostumbra a trabajar así en vb.net pero yo le he sacado un mayor provecho y rendimiento a trabajar con dataset y con las conexiones a red no hay ningún problema, se puede crear una propiedad del sistema en Settings que podes modificar a gusto y antojo. Importas todas tus tablas y trabajas con procedimientos almacenados en la base de datos, bueno si no queres cargar la base de datos, podes trabajar con procedimientos almacenados en memoria en vb.net. Yo creo que es mucho mejor que trabajar en 3 Capas, mas rapido y tiene una gran manejavilidad. Tu mandas cuando podemos hablar y te muestro como, así te devuelvo el favor de cuando me enseñaste a trabajar en vb.6 a codigo las bases de datos. ;)

softmania

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +4/-0
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #7 en: Septiembre 05, 2012, 12:18:06 am »

Hola. Puedes usar todo como si fuera visual basic 6, hay pequeñas variaciones , pero no son drásticas. Por ejemplo, a lo que te refieres seguramente es ADO, esa es la librería con la que conectabas todo tipo de base de datos en Visual basic 6, ( hablas de sentencias como insert, update y delete, por lo que supongo que no es el viejo DAO)

haber trataré de orientarte un poco.

Yo empezaría por agregar un módulo y escribir una subrutina "conectar" de tipo pública

Esto es para mysql, aca aplico con un conector odbc un poco viejo 3.51, pero puedes hacerlo con uno mas actualizado, es solo cambiar la version.

Citar
"No es un capricho que la conexión a la base de datos se establezca de forma pública. "

Citar
esto seria lo que va en el módulo


Código: (VB) [Seleccionar]
Imports ADODB




    Public cn As New ADODB.Connection
    Public str_SERVER As String = "127.0.0.1"  ' ip o dns del servidor sea local o remoto
    Public str_PORT As String = "3306" ' puerto
    Public str_DATABASE As String = "nombre"
    Public str_USER As String = "usuario"
    Public str_PASS As String = "pass"

    Public Sub Conectar()
        Dim cnString As String
'cambias el string de conexión para conectar a otras bases de datos ...
        cnString = "DRIVER={MySQL ODBC 3.51 Driver};" & _
        "SERVER=" & str_SERVER & ";" & _
        "PORT=" & str_PORT & ";" & _
        "DATABASE=" & str_DATABASE & ";" & _
        "USER=" & str_USER & ";" & _
        "PASSWORD=" & str_PASS & ";OPTION=3;"



        If cn.State <> 1 Then
            cn.ConnectionString = cnString
            cn.Open()

        End If

    End Sub




Esto puede ir donde quieras ponerlo, solo que siempre recuerda : Imports ADODB

Citar
Esto sería para agregar, solo se cambia la sentencia sql para update, delete o listar

Código: (VB) [Seleccionar]
Imports ADODB


Private Sub Agregar()
        Dim RS As New ADODB.Recordset
        Dim SQL As String
        Dim Str_datos As String

       Try

Str_datos = "'DATO1','DATO2'"

SQL = "INSERT INTO tabla (campo1,campo2) VALUES (" & Str_datos & ")"

' aca varía con respecto a vb6

RS.CursorLocation = ADODB.CursorLocationEnum.adUseClient
RS.Open(SQL, cn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)


'aca lo cargas a una lista si quieres

If RS.State <> 0 Then
RS.Close()
End If



MsgBox("Los datos se han agregado en forma correcta.", vbInformation, "Agregar Datos")

Catch ex As Exception

MsgBox("Se detectaron errores al intentar cargar el dato.", vbInformation, "Error! - Agregar Datos")

If RS.State <> 0 Then
RS.Close()
End If

End Try

End Sub

No se si responde tu pregunta? ... Hay otras formas de conectar y de una manera mas conveniente (permitiendo la gestión de datos offline, actualizaciones de datos controladas, etc) , pero este es un ejemplo muy similar a lo que se hacia en vb6 ... salu2 Colega
Solo se que no se nada!!! ;) By Sócrates

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #8 en: Septiembre 05, 2012, 12:26:50 am »
pero conectarse con el ADO de visual basic 6 en .NET es como tener una ferrari con motor de fitito.

.NET tiene su propio ADO, no hace falta usar el de visual basic, justamente publique este proyecto para que vean la forma de trabajar y de conectarse:

ABM basico + SQL (.NET) (con clases)

es valido para cualquier motor de base de datos.


softmania

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +4/-0
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #9 en: Septiembre 05, 2012, 02:18:20 am »
pero conectarse con el ADO de visual basic 6 en .NET es como tener una ferrari con motor de fitito.

.NET tiene su propio ADO, no hace falta usar el de visual basic, justamente publique este proyecto para que vean la forma de trabajar y de conectarse:

ABM basico + SQL (.NET) (con clases)

es valido para cualquier motor de base de datos.



JAJAJA, no estoy de acuerdo, ADO es muy potente ("NO semejante comparación" jejeje) ... pero vale la acotación... Hay sistemas gigantes montados sobre los pilares de ado, pero es imposible no ver las mejoras de ADO NET ...  salu2 colega
http://es.wikipedia.org/wiki/ADO.NET
http://en.wikipedia.org/wiki/Comparison_of_ADO_and_ADO.NET
Solo se que no se nada!!! ;) By Sócrates

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #10 en: Septiembre 05, 2012, 10:48:45 am »
haber si se entiende, el ADO de visual basic 6 no se usa mas en .NET, ni deberia ser usada por nadie, es una libreria COM vieja de los años 90 que usa visual basic 6, que en .NET ya ni existe, .NET ya viene con su propio ADO, que es mil veces mas potente que el ADO que usa visual basic 6 y en performance ni te digo.

y si algun sistema usa el ADO viejo del visual basic 6 en .NET esta muy mal que sea asi.

otro ejemplo clasico de mal uso, es por ejemplo el control OCX winsock de sockets de VB6, algunos que se pasan a .NET siguen usando ese OCX viejo, cuando en realidad tienen que usar las clases de manejo de sockets que ofrece .NET y que reemplazan al ocx.

saludos.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Modulo de Conexion
« Respuesta #11 en: Septiembre 08, 2012, 11:56:26 pm »
Saludos a todos !!!  ;D

Bueno en cuanto a la forma de conexión con una BD (en mi caso, Firebird) he usado estas dos subs en un Modulo:

http://vb6firebird.com/foro/index.php/topic,14.0.html

Y en cuanto a la insersión de registros uso esta (incluye BeginTransaction -ver penúltima respuesta en ese post, que por cierto le pertenece a mi gran amigo Yvan  ;D ):

http://vb6firebird.com/foro/index.php/topic,17.0.html

Esos, se los pasé a Miguel (ssccaann43).

Por cierto Seba, por fin subiste el ABM !!! y de paso, es excelente  :o y lo considero muy didáctico, ssccaann43, bájatelo, te lo recomiendo !!!  :o


Saludos !!!


Manuel F. Borrego S.  8)
Barcelona, Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!