Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: usuani en 11 Marzo 2010, 19:34 pm



Título: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: usuani en 11 Marzo 2010, 19:34 pm
Ola estoy haciendo pruebas con la base de datos Northwind  de dql sever managmen studio express desde visual studio 2008, mi problema es que al ejecutar mi aplicacion me salta el siguiente error "No se controló sql esception sintaxis incorrecta cera de 'LeerTerritorios'"
yo quiero ler los terrirorios que tine una region...
la sql creo que la tengo vien, es esta:

     set ANSI_NULLS ON
     set QUOTED_IDENTIFIER ON
     GO

     ALTER PROCEDURE [dbo].[LeerTerritorios]
     @RegionID int
    AS
     BEGIN
   Select TerritoryID, TerritoryDescription
      From Territories
   Where RegionID = @RegionID
    Order by 2
    END


y en la clase tengo:


 public class Territories : List<Territory>
    {
        #region Métodos Públicos
         public void Leer(int RegionID)
        {
            SqlAccesoDatos.AñadirParámetro("@RegionID", System.Data.SqlDbType.Int, RegionID);
           
           // SqlDataReader dr =
            SqlAccesoDatos.ObtenerDataReader("LeerTerritorios");

            //while (dr.Read())
            //    this.Add(new Territory(Convert.ToInt32(dr["TerritoryID"]),
            //                           Convert.ToInt32(dr["RegionID"]),
            //                           dr["TerritoryDescription"].ToString()));
            //dr.Close();

        }
        #endregion


en leerTerritorios es donde me da el pproblema.. no se si sera porque la reigonID = no la paso bien.. alguien puede ayudarme. Gracias.


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: [D4N93R] en 11 Marzo 2010, 19:55 pm
Que clase es:  SqlAccesoDatos. Puedes publicarla aca.. saludos


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: usuani en 11 Marzo 2010, 20:05 pm
SqlAccesoDaros es una clase que tengo en la blblioteca.. sirve para  hacer la consulta.. pero ese no es el problen la he utilizado + veces y va bien..y en otra parte de esta aplicacion tambien la uso y funciona..


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: Novlucker en 11 Marzo 2010, 20:07 pm
Idem, se me hace que hay una mala implementación de los métodos en la clase/capa de datos. Tienes un método para añadir parámetros? y el retorno? :huh:

Como han dicho antes, publica la clase SqlAccesoDatos, que sin ver la manera en la que ejecutas conexion y consulta es imposible :-\

Saludos


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: usuani en 11 Marzo 2010, 20:18 pm
        public static void AñadirParámetro(string Nombre, SqlDbType Tipo, object Valor)
        {
            if (cmd == null)
                cmd = new SqlCommand();
            cmd.Parameters.Add(Nombre, Tipo);
            cmd.Parameters[cmd.Parameters.Count - 1].Value = Valor;
        }

        public static void AñadirParámetro(string Nombre, SqlDbType Tipo, int Tamaño, object Valor)
        {
            if (cmd == null)
                cmd = new SqlCommand();
            cmd.Parameters.Add(Nombre, Tipo, Tamaño);
            cmd.Parameters[cmd.Parameters.Count - 1].Value = Valor;
        }

        public static void AñadirParámetro(string Nombre, SqlDbType Tipo, ParameterDirection Dirección)
        {
            if (cmd == null)
                cmd = new SqlCommand();
            cmd.Parameters.Add(new SqlParameter());
            cmd.Parameters[cmd.Parameters.Count - 1].ParameterName = Nombre;
            cmd.Parameters[cmd.Parameters.Count - 1].Size = 1;
            cmd.Parameters[cmd.Parameters.Count - 1].SqlDbType = Tipo;
            cmd.Parameters[cmd.Parameters.Count - 1].Direction = Dirección;
        }



Tengo una clase de territorio donde creo que el constructor deberia recibir el codigo de la region que tengo leida (para leer solo los territorios de dicha region) en un combobox. El ploblema es como le paso ese codigode region..porque el program falla porque el codigo debe se nulo...


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: Novlucker en 11 Marzo 2010, 20:25 pm
Te falto publicar el ObtenerDataReader :rolleyes:

Y sigo sin ver la lógica, creas un sqlcommand, pero nunca lo retornas ni nada, dices que eso te funciona :huh:


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: [D4N93R] en 11 Marzo 2010, 20:26 pm
Te falto publicar el ObtenerDataReader :rolleyes:

Y sigo sin ver la lógica, creas un sqlcommand, pero nunca lo retornas ni nada, dices que eso te funciona :huh:


Exacto, yo tampoco entiendo. Publica la clase completa..

Un saludo


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: usuani en 11 Marzo 2010, 20:29 pm
 public static SqlDataReader ObtenerDataReader(string Sql)
      {
         if (tipoComando == CommandType.Text)
                return obtenerDataReader(Sql, true);
         else
                return sp_obtenerDataReader(Sql, true);
      }

        public static SqlDataReader ObtenerDataReader(string Sql, bool LimpiarParámetros)
        {
            if (tipoComando == CommandType.Text)
                return obtenerDataReader(Sql, LimpiarParámetros);
            else
                return sp_obtenerDataReader(Sql, LimpiarParámetros);
        }


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: Novlucker en 11 Marzo 2010, 20:54 pm
Perdón si ofendo a alguien! , pero no creo que eso haya funcionado alguna vez, o tienes mucho más código en lo que no estas publicando, o has recortado de todas partes.

En los métodos de ObtenerDataReader haces uso la variable tipoComando, variable que nunca declaras ni pasas por parámetros, así que seguro ahí se parte ... y aunque solucionaras eso deberías de tener un buffer overflow y el VS debería de notificartelo, porque entras en un bucle infinito de llamadas a dicho método ... en los retornos tienes una nueva llamada

[Edito]
Perdón, no hay BOF, los retornos tienen un "sp_" delante :xD ... ahora hace falta ese método ... lo dicho, no podemos ayudarte si tienes métodos, que llaman a una clase, que tiene "X" método, que llama a otro método, que ... :¬¬

[re-Edito]
Ahora veo que solo el segundo retorno tiene el "sp_", así que descarto lo anterior, si debería de "partirse" :xD

Saludos


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: [D4N93R] en 12 Marzo 2010, 16:32 pm
Citar
Ahora veo que solo el segundo retorno tiene el "sp_", así que descarto lo anterior, si debería de "partirse"

Nop, Fíjate en el nombre
Código:
public static SqlDataReader ObtenerDataReader

Y el que llama dentro de éste es: obtenerDataReader, La O de obtener es minúscula, y C# es case sensitive.

Aun le falta por publicar ese método:
Código:
obtenerDataReader
..


Título: Re: [Mod]Problemas Consulta SQL desde VS 2008
Publicado por: Novlucker en 12 Marzo 2010, 17:03 pm
Ups!
Es verdad ... es el problema de tener métodos con el "mismo" nombre, terminas con un código desordenado y poco entendible :-X

Saludos