Comment puis-je me connecter à une base de données et boucler sur un jeu d'enregistrements en C #?

Translate

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 #?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

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

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"]);
            }
        }
    }
}
La source
Translate

Très grossièrement et de mémoire car je n'ai pas de code sur cet ordinateur 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);
      }
    }
  }
}
La source
Translate

C'est certainement une bonne façon de le faire. Mais si vous utilisez une base de données prenant en charge 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());
La source
Translate

C'est une autre manière (DataReader est plus rapide que celui-ci):

string s = "";
SqlConnection conn = new SqlConnection("Server=192.168.1.1;Database=master;Connect Timeout=30;User ID=foobar;Password=raboof;");
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 5 name, dbid FROM sysdatabases", conn);
DataTable dt = new DataTable();

da.Fill(dt);

for (int i = 0; i < dt.Rows.Count; i++)
{
    s += dt.Rows[i]["name"].ToString() + " -- " + dt.Rows[i]["dbid"].ToString() + "\n";
}

MessageBox.Show(s);
La source
Translate

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());
  }
}
La source
Translate

Si vous interrogez une base de données SQL Server (version 7 et plus), vous devez remplacer les classes OleDb par les classes correspondantes dans leSystem.Data.SqlClientespace de noms (SqlConnection, SqlCommandetSqlDataReader) car ces classes ont été optimisées pour fonctionner avec SQL Server.

Une autre chose à noter est que vous ne devez «jamais» sélectionner tout, car cela pourrait conduire à des résultats inattendus plus tard si vous ajoutez ou supprimez des colonnes à ce tableau.

La source
Translate

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
}
La source
Translate

Chargez les bibliothèques

using MySql.Data.MySqlClient;

Voici la connexion:

public static MySqlConnection obtenerconexion()
        {
            string server = "Server";
            string database = "Name_Database";
            string Uid = "User";
            string pwd = "Password";
            MySqlConnection conect = new MySqlConnection("server = " + server + ";" + "database =" + database + ";" + "Uid =" + Uid + ";" + "pwd=" + pwd + ";");

            try
            {
                conect.Open();
                return conect;
            }
            catch (Exception)
            {
                MessageBox.Show("Error. Ask the administrator", "An error has occurred while trying to connect to the system", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return conect;
            }
        }
La source