Problemas con OleDb para acceder a SQL Server

26/07/2005 - 12:43 por German | Informe spam
Tengo una aplicacion que funcionaba sobre Access. Ahora estoy migrandola a
SQL Server y he tenido un problema con los parametros de las consultas.
Resulta que al ejecutarlas me dice que los parametros no estan declarados. Lo
unico que he cambiado es la cadena de conexion que ahora usa el provider para
sql en vez de el de access.

Dim connectionString As String = "Provider=sqloledb;Data
Source=(local);Initial Catalog=bbdd;User Id=usu;Password=pass;"
Dim dbConnection As System.Data.IDbConnection = New
System.Data.OleDb.OleDbConnection(connectionString)

Dim queryString As String = "SELECT Entidades.* FROM Entidades WHERE
(Entidades.Codigo = @Codigo)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand()
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dbParam_codigo As System.Data.IDataParameter = New
System.Data.OleDb.OleDbParameter()
dbParam_codigo.ParameterName = "@Codigo"
dbParam_codigo.Value = codigo
dbParam_codigo.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_codigo)

Dim dataAdapter As System.Data.IDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter()
dataAdapter.SelectCommand = dbCommand
Dim dataSet As System.Data.DataSet = New System.Data.DataSet()
dataAdapter.Fill(dataSet)

En este caso el error salta en la ultima linea al realizar el Fill diciendo:
"Debe declarar el parametro @Codigo". El valor que le paso al parametro no es
nulo.
Si uso las clases de SqlClient en vez de las de OleDb todo funciona, pero
por motivos que no vienen al caso no es viable usar SqlClient en mi
aplicacion. Alguna solucion para que funcionen las consultas con parametros
usando las clases OleDb?
Gracias por todo.
 

Leer las respuestas

#1 A.Poblacion
26/07/2005 - 14:17 | Informe spam
"German" wrote in message
news:
Tengo una aplicacion que funcionaba sobre Access. Ahora estoy migrandola a
SQL Server y he tenido un problema con los parametros de las consultas.
Resulta que al ejecutarlas me dice que los parametros no estan declarados.


Lo
unico que he cambiado es la cadena de conexion que ahora usa el provider


para
sql en vez de el de access.

Dim connectionString As String = "Provider=sqloledb;Data
Source=(local);Initial Catalog=bbdd;User Id=usu;Password=pass;"
Dim dbConnection As System.Data.IDbConnection = New
System.Data.OleDb.OleDbConnection(connectionString)

Dim queryString As String = "SELECT Entidades.* FROM Entidades WHERE
(Entidades.Codigo = @Codigo)"
Dim dbCommand As System.Data.IDbCommand = New


System.Data.OleDb.OleDbCommand()
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dbParam_codigo As System.Data.IDataParameter = New
System.Data.OleDb.OleDbParameter()
dbParam_codigo.ParameterName = "@Codigo"
dbParam_codigo.Value = codigo
dbParam_codigo.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_codigo)

Dim dataAdapter As System.Data.IDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter()
dataAdapter.SelectCommand = dbCommand
Dim dataSet As System.Data.DataSet = New System.Data.DataSet()
dataAdapter.Fill(dataSet)

En este caso el error salta en la ultima linea al realizar el Fill


diciendo:
"Debe declarar el parametro @Codigo". El valor que le paso al parametro no


es
nulo.
Si uso las clases de SqlClient en vez de las de OleDb todo funciona, pero
por motivos que no vienen al caso no es viable usar SqlClient en mi
aplicacion. Alguna solucion para que funcionen las consultas con


parametros
usando las clases OleDb?



Si usas las clases OleDb en lugar de SqlClient, todos los parámetros se
llaman "?" en lugar de "@algo":

Dim queryString As String = "SELECT Entidades.* FROM Entidades WHERE
(Entidades.Codigo = ?)"
...
Dim dbParam_codigo As System.Data.IDataParameter = New
System.Data.OleDb.OleDbParameter()
dbParam_codigo.ParameterName = "CualquierCosa"
dbParam_codigo.Value = codigo
dbParam_codigo.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_codigo)
...

Preguntas similares