none
Error Palabra clave no admitida 'provider' RRS feed

  • Pregunta

  • Hola, tengo el codigo siguiente que publico mas abajo y cuando lo ejecuto me da el error de "Palabra clave no valida provider"

    Supongo que es un error en la cadena de conexion, pero no se por donde corregirlo.

    Podeis darme alguna idea?

    Gracias

    Imports System
    Imports System.ComponentModel
    Imports System.Data.SqlClient
    Imports System.Web.UI.WebControls.WebParts
    
    <ToolboxItem(False)> _
    Public Partial Class AplicacionComerciales
        Inherits WebPart
    
        Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
            MyBase.OnInit(e)
            InitializeControl()
        End Sub
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim cs As New SqlConnectionStringBuilder
            cs.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BBDD_COMERCIALES;Data Source=WIN-OBRJMO10LRQ\SHAREPOINT"
            Dim conn = New SqlConnection(cs.ConnectionString)
            conn.Open()
            
        End Sub
    
    End Class
    
    


    • Editado igorzama sábado, 9 de septiembre de 2017 11:53
    • Cambiado Enrique M. Montejo lunes, 11 de septiembre de 2017 14:27 Pregunta relacionada con el acceso a datos.
    sábado, 9 de septiembre de 2017 11:51

Respuestas

  • "igorzama" escribió:

    > tengo el codigo siguiente que publico mas abajo y cuando lo ejecuto me
    > da el error de "Palabra clave no valida provider"
    >
    > cs.ConnectionString = "Provider=SQLOLEDB.1; ..."
    >
    > Supongo que es un error en la cadena de conexion, pero no se por donde corregirlo.

    Supones bien, porque como estás utilizando el proveedor de datos .NET para SQL Server:

        Dim conn = New SqlConnection(cs.ConnectionString)

    éste no necesita que su cadena de conexión contenga el parámetro Provider, por lo que simplemente lo tendrás que eliminar de la cadena de conexión:

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            
            ' Cadena de conexión con la base de datos de SQL Server.
            Dim cadenaConexion As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BBDD_COMERCIALES;Data Source=WIN-OBRJMO10LRQ\SHAREPOINT"
    
            Using conn As New SqlConnection(cadenaConexion)
                conn.Open()
            End Using
    
        End Sub


    En principio no te hace falta para nada hacer uso de un objeto SqlConnectionStringBuilder, salvo que tengan un motivo para hacerlo, claro está.

    Y el código lo encierro entre un bloque Using ... End Using para que una vez ejecutado éste último, se cierre la conexión y se destruyan automáticamente los recursos utilizados por el objeto SqlConnection.

    Por último comentarte que, como observo que estás desarrollando un proyecto web, por si lo ignoras te informo que el foro de ASP .NET en español lo podrás encontrar en el siguiente enlace:

    Foro de ASP.NET

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    sábado, 9 de septiembre de 2017 15:58
  • El "Provider=..." se usa con las conexiones OleDb. En tu caso, dado que estás usando un SqlConnection en lugar de un OleDbConnection, basta con que lo suprimas, como ya te han indicado en otra respuesta anterior. Pero si alguna vez usas OleDb, tendrás que incluirlo.
    sábado, 9 de septiembre de 2017 17:18

Todas las respuestas

  • "igorzama" escribió:

    > tengo el codigo siguiente que publico mas abajo y cuando lo ejecuto me
    > da el error de "Palabra clave no valida provider"
    >
    > cs.ConnectionString = "Provider=SQLOLEDB.1; ..."
    >
    > Supongo que es un error en la cadena de conexion, pero no se por donde corregirlo.

    Supones bien, porque como estás utilizando el proveedor de datos .NET para SQL Server:

        Dim conn = New SqlConnection(cs.ConnectionString)

    éste no necesita que su cadena de conexión contenga el parámetro Provider, por lo que simplemente lo tendrás que eliminar de la cadena de conexión:

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            
            ' Cadena de conexión con la base de datos de SQL Server.
            Dim cadenaConexion As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BBDD_COMERCIALES;Data Source=WIN-OBRJMO10LRQ\SHAREPOINT"
    
            Using conn As New SqlConnection(cadenaConexion)
                conn.Open()
            End Using
    
        End Sub


    En principio no te hace falta para nada hacer uso de un objeto SqlConnectionStringBuilder, salvo que tengan un motivo para hacerlo, claro está.

    Y el código lo encierro entre un bloque Using ... End Using para que una vez ejecutado éste último, se cierre la conexión y se destruyan automáticamente los recursos utilizados por el objeto SqlConnection.

    Por último comentarte que, como observo que estás desarrollando un proyecto web, por si lo ignoras te informo que el foro de ASP .NET en español lo podrás encontrar en el siguiente enlace:

    Foro de ASP.NET

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    sábado, 9 de septiembre de 2017 15:58
  • El "Provider=..." se usa con las conexiones OleDb. En tu caso, dado que estás usando un SqlConnection en lugar de un OleDbConnection, basta con que lo suprimas, como ya te han indicado en otra respuesta anterior. Pero si alguna vez usas OleDb, tendrás que incluirlo.
    sábado, 9 de septiembre de 2017 17:18