Conectar a un Servidor por Internet

Iniciado por Choclito, 8 Noviembre 2010, 16:15 PM

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

Choclito

Hola a todos yo trabajo realizando aplicaciones con conexiones locales mediante el siguiente codigo.
ahora quiero ver si se puede conectar por internet una aplicacion y ver si puedo seguir usando la siguiente forma de conectarse.. me estoy rompiendo la cabeza en intentar conectar mediante internet pero no tengo ni idea.. me gustaria si me pudieran dar algunas pautas o si tuvieran ejemplos seria mucho mejor.
me dijeron que busque DNS pero tuve buscando pero no encuentro ejemplos claros haber si me hechan una mano.

Código (vbnet) [Seleccionar]
Imports System.Data.OleDb
Imports System.Security.Cryptography

Public Class Cls_Conexion
    Public Conexion As New OleDb.OleDbConnection
    Dim ControlError As String

    Public Function Abrir(ByVal Servidor As String, ByVal BaseDatos As String, ByVal Usuario As String, ByVal Password As String) As Boolean
        Try
            Conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= c:\trabajito; Extended Properties= ""Excel 12.0;HDR=YES;""")
            Conexion.Close()
            Conexion.Open()
            Conexion.Close()
            Abrir = True
        Catch ex As Exception
            Abrir = False
            MsgBox("Acceso no Permitido", vbCritical, "Módulo de Registro Civil")
        End Try
    End Function

    Public Function AbrirSql(ByVal Sql As String) As DataTable
        On Error GoTo ControlError
        Dim ObjDataSet As New DataSet
        Conexion.Open()
        Dim ConsultaSql As New OleDb.OleDbCommand(Sql, Conexion)
        'ConsultaSql.CommandType = CommandType.StoredProcedure
        Dim ObjDataAdapter As New OleDb.OleDbDataAdapter(ConsultaSql)
        Dim ObjDataTable As New DataTable
        ObjDataAdapter.Fill(ObjDataTable)
        AbrirSql = ObjDataTable
        Conexion.Close()
        Exit Function
ControlError: MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
        Conexion.Close()
    End Function

    Public Function EjecutarSqlOLEDB(ByVal cComando As OleDbCommand) As Boolean
        Dim transaction As OleDbTransaction
        Conexion.Open()
        transaction = Conexion.BeginTransaction()
        Try
            cComando.Transaction = transaction
            cComando.Connection = Conexion
            cComando.ExecuteNonQuery()
            transaction.Commit()
            Conexion.Close()
            EjecutarSqlOLEDB = True
        Catch ex As Exception
            transaction.Rollback()
            Conexion.Close()
            EjecutarSqlOLEDB = False
            MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
            'MessageBox.Show("No se puede realizar la conexion a la Base de Datos... Contáctese con el Administrador del Sistema", "SIGAF - ESCALAFON", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Function 

End Class


.::IT::.

#1
"Choclito" lamento decepcionarte pero si estas usando bases de datos de archivo(Excel, access entre otros) vas ah poder conectarte ah ellas usando software de terceros ya sea el famoso hamachi ,OPenvpn entre otros, en mi opinión te recomiendo Openvpn es un poco mas difícil de configurar que el hamachi(que es muy fácil)pero es mas rápido, como recomendación seria que uses motores de bases de datos  como Postgresl,MySQL, MSSQl, Oracle etc. Y casi lo olvido conectarse ah una base de datos de archivo por Internet es muy pero muy lento, y para terminar si usas Windows Xp para adelante pues puedes montar una VPN casera que por cierto es mas rápida que openvpn(yo lo probé y te lo puedo garantizar) de dejo el link cualquier duda consulta en el foro
http://www.elguille.info/sistema/VPN/vpn_servidor.aspx
Simplemente .::IT::.

.mokk.

Yo la verdad te aconsejaria mejor hacerlo en MySQL o MSSQL, si ya pasaras a hacerlo por internet, ya que como dijo .::IT::.  , sera mucho mas tardado y ademas quien quiere estarse matando por hacer una conexion a archivos remotos si para ello tenemos la facilidad de MySQL y/o MSSQL.

Ademas es casi lo mismo la conexion o am el codigo de conexion
Ejemplo Conectar a MSSQL
Código (vb.net) [Seleccionar]

imports system.data.sqlclient
module Conexion0
dim con as sqlconnection
dim ad as new sqldataadapter
dim dt as datatable
dim comando as string
Public conexion As String = "data source = 127.0.0.1; initial catalog = GunzDB; user id = sa; password = zombie000"

'datasource = servidor , initial catalog=BaseDeDatos , userid= usuario , password = contraseña

public sub conectar
con = new sqlconnection()
con.connectionstring(conexion)

try
con.open()
msgbox("Conexion Exitosa (:")
con.close()
catch
msgbox("Error en la conexion")
end try

end sub

'Ejemplo de una query
public sub query
dt = new datatable
'Query para obtener todos los datos de la tabla Cuentas para al final mostrarla en un Datagridview
comando = "SELECT * FROM Cuentas"
ad = new sqldataadapter(comando,conexion)
ad.fill(dt)
Form1.datagridview1.datasource = dt

end sub

end module

try

Choclito

Ola esto es mi otra conexion que hago ya y quiero ver si con esta conexion funciona
nota : me olvide decirle que mi gestor de base de datso era el sql

Código (vbnet) [Seleccionar]
Imports System.Data.OleDb
Imports System.Security.Cryptography
Imports System.Data.SqlClient
Public Class clsConexion
   Public cadenaconexion As New SqlConnection
   Public Function Abrir(ByVal server As String, ByVal DB As String, ByVal usuario As String, ByVal clave As String) As Boolean
       Try
           cadenaconexion.ConnectionString = "Data Source=(local);Initial Catalog=PLANILLA;integrated security=true"
           cadenaconexion.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message.ToString())
       End Try
   End Function
   Public Function AbrirSql(ByVal sentenciaSQL As String) As DataTable
       cadenaconexion.Open()
       Dim consulta As New SqlCommand(sentenciaSQL, cadenaconexion)
       Dim daBD As New SqlDataAdapter(consulta)
       Dim dtBD As New DataTable
       daBD.Fill(dtBD)
       AbrirSql = dtBD
       cadenaconexion.Close()
   End Function
   Public Sub Cerrarconexion()
       cadenaconexion.Close()
   End Sub
 
End Class

.mokk.

Pues si deberia funcionar, solo recuerda tambien que a la Base de Datos a la cual accederemos si es en MSSQL tiene que tener permitido el acceso remoto, y asignarle un userid y contraseña para la seguridad, la conexion que tu usas ahi es mayormente usado para locales.

y en la Funcion Abrir no estoy seguro porque no colocar el
cadenaconexion.Open()

Por lo demas lo vi bien

Choclito

ya muchas gracias pero lo que quiero saber es como configurar la conexion ..  lo hago con esta cadena de conexion o tengo que usar otra ..
eso es la gran duda que tengo como tu dices eso es para conexiones locales .. pero para conectarme tendra que usar otro codigo o algo ??
porque hasta donde estaba investigando me dijeron que haga conexiones ODBC
es cierto eso ..?

.mokk.

hehehe si tmb se puede con ODBC o he visto pero yo siempre lo hago con SQL ahi hehe
si te fijas en el source anterior que puse el codigo de conexion es

"data source = 127.0.0.1; initial catalog = GunzDB; user id = sa; password = zombie000"


Con esa es la que yo uso pra conectarme a Base de Datos remotas en MSSQL solo claro en ves de esos datos pongo la IP del servidor un ejemplo a servidor remoto seria


"data source = crymore.sytes.net; initial catalog = GunzDB; user id = sa; password = zombie000"


Con esa podras entrar a mi Base de Datos
crymore.sytes.net es mi NO-IP para hacer redireccion a mi hehe, aunque GunZDB es una Base de Datos que uso para un juego y por ahora esta vacia hehe ahi puedes intentar entrar en ella para que veas (:

MANULOMM

OK, para el caso esta bien.

Pero te presento el mundo de los servicios web, publicar la BD es una mala practica, seria muy sensible a un ataque, un servicio web puede viajar por el puerto 80 ( el mas comun) y utilizar SSL para encripcion, la conexión con la BD es mas vulnerable.


Atentamente,

Juan Manuel Lombana

Microsoft Certified Professional
Microsoft Student Partner
Medellín - Colombia


.mokk.

Cita de: MANULOMM en  8 Noviembre 2010, 20:57 PM
OK, para el caso esta bien.

Pero te presento el mundo de los servicios web, publicar la BD es una mala practica, seria muy sensible a un ataque, un servicio web puede viajar por el puerto 80 ( el mas comun) y utilizar SSL para encripcion, la conexión con la BD es mas vulnerable.


Atentamente,

Juan Manuel Lombana

Microsoft Certified Professional
Microsoft Student Partner
Medellín - Colombia

Eso si es verdad, por lo mismo en esta clase de proyectos hay que tener cuidado, desde saber quienes lo tendran y que ellos no se lo pasen a terceros, tambien hacer un login de tipo HWID para hacerlo mejor, y claro proteger nuestra aplicacion para que no pueda ser leida facilmente ya sea con .NET Reflector o algun otro.

Yo solo uso esta forma ya que donde esta hosteada la DB, no es mi PC y crear una web en ella para manejar la DB se me hace mas tedioso que crear una aplicacion de escritorio hehe , proximamente vere eso para hacer alguna en silverlight(si esque se puede).

Choclito

Hola de new mira esta interante tu conexion
crymore.sytes.net eso tu lo configurastes en tu Pc y como haria yo por ejemplo para configurar eso en mi servidor para poderme conectar o solo pido Ip ?
creo que con eso se solucionaria la duda que tengo ..?