visual - Wie verbinde ich mich mit einer Datenbank und Schleife über ein Recordset in C#?




visual basic sql datenbank auslesen (5)

Was ist der einfachste Weg, um eine Datenbank für eine Reihe von Datensätzen in C # zu verbinden und abzufragen?


@ Goyuix - das ist hervorragend für etwas aus dem Gedächtnis geschrieben. habe es hier getestet - habe festgestellt, dass die Verbindung nicht geöffnet wurde. Sonst sehr nett.

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

Das ist definitiv ein guter Weg, es zu tun. Aber wenn Sie eine Datenbank verwenden, die LINQ to SQL unterstützt, kann es viel mehr Spaß machen. Es kann in etwa so aussehen:

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

Ich denke, Sie können Entity Framework ausprobieren.

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

Sehr grob und auswendig, da ich auf diesem Laptop keinen Code habe:

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);
      }
    }
  }
}

Wenn Sie eine große Anzahl von Spalten oder Datensätzen lesen möchten, sollten Sie auch die Ordinalzahlen zwischenspeichern und auf die stark typisierten Methoden zugreifen, z

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






connection