example - Comment me connecter à une base de données et faire une boucle sur un jeu d'enregistrements en C#?




connect c# console application to database (5)

@Goyuix - c'est excellent pour quelque chose écrit de la mémoire. testé ici - trouvé la connexion n'a pas été ouverte. Sinon très bien.

using System.Data.OleDb;
...

using (OleDbConnection conn = new OleDbConnection())
{
    conn.ConnectionString = "Provider=sqloledb;Data Source=yourServername\\yourInstance;Initial Catalog=databaseName;Integrated Security=SSPI;";

    using (OleDbCommand cmd = new OleDbCommand())
    {
        conn.Open();
        cmd.Connection = conn;
        cmd.CommandText = "Select * from yourTable";

        using (OleDbDataReader dr = cmd.ExecuteReader())
        {
            while (dr.Read())
            {
                Console.WriteLine(dr["columnName"]);
            }
        }
    }
}

Quel est le moyen le plus simple de se connecter et d'interroger une base de données pour un ensemble d'enregistrements en C #?


C'est certainement un bon moyen de le faire. Mais si vous utilisez une base de données qui supporte LINQ to SQL, cela peut être beaucoup plus amusant. Cela peut ressembler à ceci:

MyDB db = new MyDB("Data Source=...");
var q = from db.MyTable
        select c;
foreach (var c in q)
  Console.WriteLine(c.MyField.ToString());

Je suppose que vous pouvez essayer le framework d'entité.

using (SchoolDBEntities ctx = new SchoolDBEntities())
{
     IList<Course> courseList = ctx.GetCoursesByStudentId(1).ToList<Course>();
     //do something with courselist here
}

Si vous avez l'intention de lire un grand nombre de colonnes ou d'enregistrements, il vaut également la peine de mettre en cache les ordinaux et d'accéder aux méthodes fortement typées, par exemple

using (DbDataReader dr = cmd.ExecuteReader()) {
  if (dr.Read()) {
    int idxColumnName = dr.GetOrdinal("columnName");
    int idxSomethingElse = dr.GetOrdinal("somethingElse");

    do {
      Console.WriteLine(dr.GetString(idxColumnName));
      Console.WriteLine(dr.GetInt32(idxSomethingElse));
    } while (dr.Read());
  }
}

Très grossièrement et de mémoire puisque je n'ai pas de code sur ce portable:

using (OleDBConnection conn = new OleDbConnection())
{
  conn.ConnectionString = "Whatever connection string";

  using (OleDbCommand cmd = new OleDbCommand())
  {
    cmd.Connection = conn;
    cmd.CommandText = "Select * from CoolTable";

    using (OleDbDataReader dr = cmd.ExecuteReader())
    {
      while (dr.Read())
      {
        // do something like Console.WriteLine(dr["column name"] as String);
      }
    }
  }
}




connection