acabo de empezar a aprender C# y puedo escribir datos en la base de datos sin problema. Pero estoy teniendo problemas con la lectura, el SQL se ejecuta bien, pero estoy teniendo problemas con el almacenamiento de la misma. ¿Cómo puedo almacenar las cuatro columnas que deben ser devueltos y, a continuación, mostrar un cuadro de mensaje? Gracias.

SqlCommand myCommand = new SqlCommand("select * from Requests where Complete = 0", myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())

Console.WriteLine(myReader["Username"].ToString());
Console.WriteLine(myReader["Item"].ToString());
Console.WriteLine(myReader["Amount"].ToString());
Console.WriteLine(myReader["Complete"].ToString());
  • Cuando el uso de bases de datos en c# que realmente debería echar un vistazo a Linq2SQL o Entity Framework. Se simplifica mucho.
  • ORM no es una panacea
  • Linq2Sql me ha ayudado más a menudo que no. La legibilidad, la comprobación de tipos en tiempo de compilación y el intellisense realmente ayuda a la productividad en mi experiencia.
  • Estoy de acuerdo en que ORM es de gran tecnología, pero no es necesario usarlo en todas partes. En novato nivel de confundir a más de enseñar
  • En la parte superior de la pregunta no tiene NADA que ver con la base de datos, pero más con cómo tratar con los datos después de la lectura. Póster es bviously desafiados con el principiante preguntas relativas a la programación.
InformationsquelleAutor Paul | 2011-05-14

5 Comentarios

  1. 29

    Uno de los problemas es la falta de apoyos después de que el mientras

    while (myReader.Read())
    {  //<<- here
        Console.WriteLine(myReader["Username"].ToString());
        Console.WriteLine(myReader["Item"].ToString());
        Console.WriteLine(myReader["Amount"].ToString());
        Console.WriteLine(myReader["Complete"].ToString());
    }  //<<- here

    si usted omitir las llaves sólo la primera línea será procesada en cada bucle, el resto será procesado después de que el bucle, a continuación, myReader es la última de la fila.

    • si esto responde a tu pregunta, que parece ser el caso, por favor asegúrese de marcar la respuesta como la respuesta. Esta es la marca de verificación de símbolo por contestar mensajes.
  2. 21

    No olvides usar el using(){} bloque :

    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand("select * from Requests where Complete = 0", connection))
    {
        connection.Open();  
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader["Username"].ToString());
                Console.WriteLine(reader["Item"].ToString());
                Console.WriteLine(reader["Amount"].ToString());
                Console.WriteLine(reader["Complete"].ToString());
            }
        }
    }
  3. 6

    Personalmente me gustaría escribir una clase con 4 propiedades (con la coincidencia de nombres y tipos), a continuación, utilizar «dapper» (http://code.google.com/p/dapper-dot-net/):

    var data = connection.Query<Request>(
        "select * from Requests where Complete = 0").ToList();

    Con algo como:

    public class Request {
        public string Username{get;set;}
        ...
        public bool Complete {get;set;}
    }

    Dapper es gratis, sencillo, tiene una parametrización para evitar la inyección SQL, y es muy, muy rápido.

  4. 0

    Me gustaría crear un objeto con las propiedades que contiene los valores y, a continuación, pasar objetos a su alrededor como sea necesario.

    public class YourObjectName
    {
       public string Username { get; set; }
       public string Item { get; set; }
       public string Amount { get; set; }
       public string Complete { get; set; }
    }
    
    YourObjectName a = new YourObjectName();
    a.Username = Reader['Username'].ToString();
    • Nunca, nunca, nunca llame a un tipo personalizado Object 🙂
    • @Mac: @Object ?:)
  5. 0

    sé que es un poco tarde, pero puede utilizar el local de variables de cadena o string array o lista de insertar los datos en la base de datos y, a continuación, llamar en la consola escribir la línea de

Dejar respuesta

Please enter your comment!
Please enter your name here