none
Importar propiedades del proyecto en VB.Net 2010

    Domanda

  • Buenas días, saludos a todo!

    Estoy comenzado en la programación y me he embarcado en un pequeño proyecto para clases de la universidad y estoy teniendo bastantes problemas con los codigos en vb.net. Espero puedan darme una mano. 

    Entre uno de los problemas que tengo es hacer la conexión a la base de datos que tengo en MySQL. Lei un montón de cosas en la web, tuve varias recomendaciones y a la final me decante por indicar la cadena de conexión en el proyecto de vb.net leyendo la conexión desde el archivo de configuraciones. 

    Ubicado en propiedades del proyecto, pestaña configuraciones y agregando una cadena de conexión.

    El detalle esta en que no se como hacer uso de esto!

    Al parecer debo importar las configuraciones del proyecto pero no tengo idea de como hacerlo. 

    El codigo de la conexion a MySQL es asi:

    Imports MySql.Data.MySqlClient
    Imports MySql.Data
    Imports System.Configuration
    Imports 
    
    Public Class frmOperaciones
    
        Private MysqlCommand As New MySqlCommand
        Dim MysqlConnString As String = Settings.Default.consql
        Public MysqlConexion As MySqlConnection = New MySqlConnection(MysqlConnString)
        Dim sAccion As String
        Friend sSqlOperaciones, sCodigo As String

    Pero tengo errores en donde dice Settings.default.consql específicamente con Settings me dice que no esta declarado. "Puede que este inaccesible debido a su nivel de protección". 

    Podrían darme una ayuda por favor. Muchas gracias de antemano. 

    martedì 20 novembre 2012 14:53

Risposte

  • Hola Amigo:

    la final me decante por indicar la cadena de conexión en el proyecto de vb.net leyendo la conexión desde el archivo de configuraciones. 

    Esto fue lo mejor que pudiste hacer, ya que si declaras la cadena de conexión en cada lugar que la vaz a ocupar llámese Agregar un registro, Actualizarlo, Eliminarlo, Leerlo esto te traerá grandes conflictos si en algún determinado momento necesitas cambiar el servidor o el nombre de la BD ya que tendrías que ir a cada uno de esos métodos o funciones y cambiarle a cada uno el valor del ConecctionString ni que decir que tendrás que compilar tu proyecto de nuevo, con el uso de App.Config te evitas este tipo de problemas ya que bastara con que ubiques la carpeta del .Exe de tu aplicación y localizaces el archivo App.Config y cambiar el valor de la cadena de conexión para que toda tu aplicación tome el cambio, sin necesidad de compilar ni nada, un solo cambio y listo, entiendes las enormes ventajas de usar el App.Config o Archivo de configuracion?

    Tutorial: Utilizar un archivo de configuración para definir un origen de datos

    Ahora un uso correcto de la cadena de conexion almacenada en el App.Config seria algo como esto:

    Using conn As New MySqlConnection( _
       ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())
       Dim cmd As MySqlCommand = conn.CreateCommand()
       cmd.CommandText = "SELECT Campo1, Campo2, Campo3 FROM TuTabla "
       Dim da As New MySqlDataAdapter(cmd)
       Dim dt As New DataTable()
       da.Fill(dt)
       Return dt
    End Using

    De donde:

    ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())

    "CadenaDeConexion" es el nombre que le asignaste a tu cadena en este proceso:

    Ubicado en propiedades del proyecto, pestaña configuraciones y agregando una cadena de conexión

    Después de esto lo que te recomiendo seria hacer un Test de conexion a tu Bd.

     Using Cnx As New MySqlConnection(ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())
      Cnx.open()
      MessageBox.Show(Cnx.State)
     End Using

    Lee detenidamente el articulo de la libreria de Microsoft, analiza el ejemplo que te proporciono trata hacer el Test y nos comentas como te fue!


    Saludos desde Monterrey, Nuevo León, México!!!

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:13
    martedì 20 novembre 2012 16:32
  • si la idea es solo acceder a al confuguracion

    Archivos de Configuración - Una introducción (1/3)

    lo explico en "1- Agregar un archivo de configuración a nuestro proyecto"

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:12
    martedì 20 novembre 2012 16:48
  • En el tutorial que te proporciona Leandro viene la solucion a tu problema actual, igual en la informacion de la libreria de microsoft de la cual te proporcione el link.

    A grandes rasgos, tendras agregar la referencia al ensamblado System.Configuration.

    1. Click derecho en el nombre de tu proyecto dentro del Explorador de soluciones
    2. Agregar referencia
    3. Seleccion ficha .NET
    4. Busca y selecciona "System.Configuration"
    5. Aceptar

    Saludos desde Monterrey, Nuevo León, México!!!

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:12
    martedì 20 novembre 2012 17:15

Tutte le risposte

  • los dos primeros namespace estan bien, pero veo que te falta la cadena de conexion, , ahora si lo que quieres es conectarte a la base de datos te recomiendo que uses ado.net

    en tu caso yo pondria todo asi pero le quitaria

    Imports System.Configuration

    Imports

    en donde dice

    Dim mysqlConstring as String = en vez de colocar Settings.Default.consql yo colocaria la cadena de conexion, el cual tu codigo quedaria de esta manera

    Dim mysqlConstring as String = "Database=tu_base_de_datos;Data Source=localhost;User Id=root;Password=root"

    ya con eso no deberias tener problemas
    martedì 20 novembre 2012 15:59
  • Muchas gracias por la pronta respuesta Dario. 

    Te comento que tienes toda la razon, colocando alli la cadena de conexión 

    Dim mysqlConstring as String = "Database=tu_base_de_datos;Data Source=localhost;User Id=root;Password=root"
    funcionaria perfecto, pero de esa forma no quiero hacerlo y te comento el porque:

    "La incrustación de cadenas de conexión en el código de la aplicación puede producir vulnerabilidades en la seguridad y problemas de mantenimiento. Las cadenas de conexión sin cifrar compiladas en el código fuente de una aplicación se pueden ver con la herramienta Ildasm.exe (Desensamblador de MSIL). Además, si la cadena de conexión cambia en algún momento, será necesario compilar de nuevo la aplicación. Por estas razones, se recomienda almacenar las cadenas de conexión en un archivo de configuración de la aplicación."

    Según ese párrafo que viene de una pagina de Microsoft no es recomendable hacerlo de esa forma. Por tal motivo preguntaba como hacer el llamado a la cadena de conexión desde el app.config que ya lo tengo configurado. 

    app.config

    <?xml version="1.0"?>
    <configuration>
        <configSections>
            <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                <section name="Operaciones.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <connectionStrings>
            <add name="Operaciones.My.MySettings.Setting" connectionString="&quot;server=localhost; database=sucre; user id= root ; password=&quot;&quot;" />
        </connectionStrings>
        <system.diagnostics>
            <sources>
                <!-- En esta sección se define la configuración del registro para My.Application.Log -->
                <source name="DefaultSource" switchName="DefaultSwitch">
                    <listeners>
                        <add name="FileLog"/>
                        <!-- Quite los comentarios de la sección posterior para escribir en el registro de eventos de la aplicación -->
                        <!--<add name="EventLog"/>-->
                    </listeners>
                </source>
            </sources>
            <switches>
                <add name="DefaultSwitch" value="Information"/>
            </switches>
            <sharedListeners>
                <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
                <!-- Quite los comentarios de la sección posterior y reemplace APPLICATION_NAME con el nombre de su aplicación para escribir en el registro de eventos de la aplicación -->
                <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
            </sharedListeners>
        </system.diagnostics>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><userSettings>
            <Operaciones.My.MySettings>
                <setting name="asd" serializeAs="String">
                    <value />
                </setting>
            </Operaciones.My.MySettings>
        </userSettings>
    </configuration>
    

    Muchas gracias, espero entiendas mis razones y puedas ayudarme con esta forma que te he comentado. 

    martedì 20 novembre 2012 16:24
  • Hola Amigo:

    la final me decante por indicar la cadena de conexión en el proyecto de vb.net leyendo la conexión desde el archivo de configuraciones. 

    Esto fue lo mejor que pudiste hacer, ya que si declaras la cadena de conexión en cada lugar que la vaz a ocupar llámese Agregar un registro, Actualizarlo, Eliminarlo, Leerlo esto te traerá grandes conflictos si en algún determinado momento necesitas cambiar el servidor o el nombre de la BD ya que tendrías que ir a cada uno de esos métodos o funciones y cambiarle a cada uno el valor del ConecctionString ni que decir que tendrás que compilar tu proyecto de nuevo, con el uso de App.Config te evitas este tipo de problemas ya que bastara con que ubiques la carpeta del .Exe de tu aplicación y localizaces el archivo App.Config y cambiar el valor de la cadena de conexión para que toda tu aplicación tome el cambio, sin necesidad de compilar ni nada, un solo cambio y listo, entiendes las enormes ventajas de usar el App.Config o Archivo de configuracion?

    Tutorial: Utilizar un archivo de configuración para definir un origen de datos

    Ahora un uso correcto de la cadena de conexion almacenada en el App.Config seria algo como esto:

    Using conn As New MySqlConnection( _
       ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())
       Dim cmd As MySqlCommand = conn.CreateCommand()
       cmd.CommandText = "SELECT Campo1, Campo2, Campo3 FROM TuTabla "
       Dim da As New MySqlDataAdapter(cmd)
       Dim dt As New DataTable()
       da.Fill(dt)
       Return dt
    End Using

    De donde:

    ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())

    "CadenaDeConexion" es el nombre que le asignaste a tu cadena en este proceso:

    Ubicado en propiedades del proyecto, pestaña configuraciones y agregando una cadena de conexión

    Después de esto lo que te recomiendo seria hacer un Test de conexion a tu Bd.

     Using Cnx As New MySqlConnection(ConfigurationManager.ConnectionStrings("CadenaDeconexion").ToString())
      Cnx.open()
      MessageBox.Show(Cnx.State)
     End Using

    Lee detenidamente el articulo de la libreria de Microsoft, analiza el ejemplo que te proporciono trata hacer el Test y nos comentas como te fue!


    Saludos desde Monterrey, Nuevo León, México!!!

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:13
    martedì 20 novembre 2012 16:32
  • yo por lo general uso el app.config, sin embargo para evitarme esos dolores de cabeza a la hora de cambiar servidor yo hice un formulario aparte para crear la conexion a mi base de datos, donde yo genero la cadena de conexion y la guardo en un archivo, de modo que al momento de ejecutar mi aplicacion, este lee la info y automaticamente este me actualiza en el app.config, asi evito abrir el app.config delante del usuario, y le doy un poco mas de seguridad a la misma
    martedì 20 novembre 2012 16:43
  • podrias definir la cadena de conexion en el archivo de configuracion pero podria encriptarlo para que sea sea seguro

    Securing Connection Strings 

    pero no dejes el conenction string fijo en el codigo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martedì 20 novembre 2012 16:46
  • si la idea es solo acceder a al confuguracion

    Archivos de Configuración - Una introducción (1/3)

    lo explico en "1- Agregar un archivo de configuración a nuestro proyecto"

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:12
    martedì 20 novembre 2012 16:48
  • Gracias Luis por la explicación y si entiendo las ventajas de usar el app.config aunque la verdad no lo conocía hasta hacer como 1 hora :D

    Que bueno que me explique bien, muchas gracias a todos los que me están ayudando. 

    Continuo:

    Adapte la ayuda que me dio Luis a esto:

    Imports MySql.Data.MySqlClient
    Imports MySql.Data
    Imports System.Configuration
    
    
    Public Class frmOperaciones
    
        Dim conn As New MySqlConnection(ConfigurationManager.connectionStrings("ConexionBD").toString())
        Dim MysqlCommand As MySqlCommand = conn.CreateCommand()
        Dim da As New MySqlDataAdapter(MysqlCommand)
        Dim dt As New DataTable()
        Dim sAccion As String
        Friend sSqlOperaciones, sCodigo As String

    Pero me dice que ConfigurationManager no esta declarado o puede que sea inaccesible. 

    P.D: No se si sea relevante pero tengo 9 formularios. Espero este usando sus ayudas de forma correcta. 

    martedì 20 novembre 2012 17:07
  • En el tutorial que te proporciona Leandro viene la solucion a tu problema actual, igual en la informacion de la libreria de microsoft de la cual te proporcione el link.

    A grandes rasgos, tendras agregar la referencia al ensamblado System.Configuration.

    1. Click derecho en el nombre de tu proyecto dentro del Explorador de soluciones
    2. Agregar referencia
    3. Seleccion ficha .NET
    4. Busca y selecciona "System.Configuration"
    5. Aceptar

    Saludos desde Monterrey, Nuevo León, México!!!

    • Contrassegnato come risposta EgarHF martedì 20 novembre 2012 18:12
    martedì 20 novembre 2012 17:15
  • Muchas Gracias Leandro y Luis y a todos los que tuvieron la amabilidad de leer mi post y trataron de ayudar. Conectado perfectamente a la base de datos.

    Puedo continuar mis dudas en este mismo post o sera que debo crear otro????


    • Modificato EgarHF martedì 20 novembre 2012 18:14
    martedì 20 novembre 2012 17:55
  • Que bueno que ya te hayas conectado, ahora deberas cerrar la pregunta marcando las respuestas que te hayan resuelto tus dudas o votandolas como utiles si te sirvieron de guia.

    Para temas futuros deberas de abrir una nueva pregunta.

    Suerte!


    Saludos desde Monterrey, Nuevo León, México!!!

    martedì 20 novembre 2012 17:59
  • Muchas gracias Luis.

    Continuare con las dudas en otro post, espero puedan seguir ayudándome. 

    Buenas tardes. 

    martedì 20 novembre 2012 18:15
  • Disculpa luis estoy teniendo problemas para ingresar a los demás formularios al parecer hay un error con la variable Conn que no permite que carguen.

    dice:

    Excepción no controlada del tipo 'System.InvalidOperationException' en Operaciones Comerciales Banco del ALBA.exeInformación adicional: Error al crear el formulario. Consulte Exception.InnerException para obtener más detalles. Error: Referencia a objeto no establecida como instancia de un objeto.

    y me señala conn como: 

    Mensaje de la excepción "Referencia a objeto no establecida como instancia de un objeto." string

    Tipo de excepción "System.NullReferenceException" string

    No se que podría ser. 

    martedì 20 novembre 2012 20:20
  • tienes algun codigo en el evento LOAD de tu formulario?

    Saludos desde Monterrey, Nuevo León, México!!!

    martedì 20 novembre 2012 20:25
  • He dejado el formulario solamente con este código que deberia ser solamente para la conexion y declarar variables:

    Imports MySql.Data.MySqlClient
    Imports MySql.Data
    Imports System.Configuration
    Public Class frmReversos
        'aqui va la conexion a la BD
        Dim conn As New MySqlConnection(ConfigurationManager.ConnectionStrings("ConexionBD").ToString())
        Dim MysqlCommand As MySqlCommand = conn.CreateCommand()
        Dim da As New MySqlDataAdapter(MySqlCommand)
        Dim dt As New DataTable()
        Friend cmdReversos, cmdActualizado, cmdEliminar As MySqlCommand
        Friend ConsultaSQL, ActualizaSQL, EliminarSQL As System.Data.IDataReader
        Dim sAccion As String
        Friend sSqlReversos, sCodigo As String
       
    End Class

    Y me sigue dando el mismo error!

    martedì 20 novembre 2012 20:31
  • Pero no lo tienes en ningun evento?

    Prueba haciendo dobre click sobre la barra de titulos de tu formulario, esto te generara el evento Load del mismo, corta tu codigo y pegalo dentro del bloque generado:

    Te quedara algo como esto:

    Private Sub Form1_Load(...) 'aqui va la conexion a la BD Dim conn As New MySqlConnection(ConfigurationManager.ConnectionStrings("ConexionBD").ToString()) Dim MysqlCommand As MySqlCommand = conn.CreateCommand() Dim da As New MySqlDataAdapter(MySqlCommand) Dim dt As New DataTable() Friend cmdReversos, cmdActualizado, cmdEliminar As MySqlCommand Friend ConsultaSQL, ActualizaSQL, EliminarSQL As System.Data.IDataReader Dim sAccion As String Friend sSqlReversos, sCodigo As String End Sub


    Aclaro que "(...)" fue para no escribir toda la linea.


    Saludos desde Monterrey, Nuevo León, México!!!

    martedì 20 novembre 2012 20:38
  • Perfecto de esta forma si carga el formulario. 

    Pero entonces cual seria el problema????

    o como seria la correcta utilización??? de ese codigo anterior mas este: 

    conn.Open()
            ' Deshabilitar los textbox
            fHabilitar_textbox(False)
            ' Ocultar los botones
            fBotones(False)
            txtReferencia.Enabled = True
            ' Mostrar el boton Buscar
            btnBuscar.Visible = True
            If frmMenu.smnuOpcion = "Consultar" Then
                sAccion = "C"
            ElseIf frmMenu.smnuOpcion = "Agregar" Then
                ' Limpiar los textbox
                fLimpiar_textbox()
                sAccion = "I"
            ElseIf frmMenu.smnuOpcion = "Actualizar" Then
                ' Actualizar datos de usuario
                ' Limpiar los textbox
                fLimpiar_textbox()
                sAccion = "A"
            ElseIf frmMenu.smnuOpcion = "Eliminar" Then
                ' Elimina datos de usuario
                ' Limpiar los textbox
                fLimpiar_textbox()
                sAccion = "E"
            End If
        End Sub
    Que son mas que todo para asignar unas letras a unas variables, llamar funciones y bloquear textbox y habilitar.
     
    martedì 20 novembre 2012 20:53
  • Buenas buenas saludos a todos!

    Gracias a todos los que me ayudaron a intentar encontrar la solucion. Aquí les traigo la respuesta para:

    [B]Importar o usar la cadena de conexión a MySQL, establecida en las propiedades del Proyecto (app.config)! VB.Net[/B]

    1º Creamos un formulario nuevo que podremos llamar FrmConexion o Conexión. Allí crearemos las variables y demás códigos para hacer uso de nuestro String de conexión. 

    2º Colocamos este código en "frmConexion" 

    Imports System.Configuration
    Imports Operaciones.My.MySettings
    
    Public NotInheritable Class frmconexion
    
        Private Shared _cnx As String
        Public Shared Property ConexionMySQL() As String
            Get
                Return My.MySettings.Default.conexionbd 'conexionbd es el nombre q le colocamos a la cadena de conexion!
            End Get
            Private Set(ByVal value As String)
                _cnx = value
            End Set
        End Property
    
    End Class

    3º Luego de esto, en los demás formularios ya podemos hacer uso de nuestro conexionstring de esta forma:

    Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)

    4º Recuerden abrir la conexión para hacer uso de ella:

    Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
                    cn.Open()

    5º También debemos hacer uso de la referencia system.configuration 

    Y esto seria todo para hacer uso de la cadena de conexion establecida en el app.config. Salu2 a todos y hasta la próxima. 


    • Modificato EgarHF domenica 2 dicembre 2012 19:37
    domenica 2 dicembre 2012 19:33