Wie verbinde ich mich mit einer Datenbank und durchlaufe ein Recordset in C #?

Translate

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

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

Alle Antworten

Translate

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

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

Sehr grob und aus dem Speicher, da ich keinen Code auf diesem Laptop 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);
      }
    }
  }
}
Quelle
Translate

Das ist definitiv ein guter Weg, es zu tun. Wenn Sie jedoch eine Datenbank verwenden, die LINQ to SQL unterstützt, kann dies viel mehr Spaß machen. Es kann ungefähr 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());
Quelle
Translate

Dies ist ein alternativer Weg (DataReader ist schneller als dieser):

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);
Quelle
Translate

Wenn Sie beabsichtigen, eine große Anzahl von Spalten oder Datensätzen zu lesen, lohnt es sich auch, die Ordnungszahlen zwischenzuspeichern und auf die stark typisierten Methoden zuzugreifen, 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());
  }
}
Quelle
Translate

Wenn Sie eine SQL Server-Datenbank ab Version 7 abfragen, sollten Sie die OleDb-Klassen durch die entsprechenden Klassen in der ersetzenSystem.Data.SqlClientNamespace (SqlConnection, SqlCommandundSqlDataReader), da diese Klassen für die Arbeit mit SQL Server optimiert wurden.

Beachten Sie außerdem, dass Sie niemals alle auswählen sollten, da dies später zu unerwarteten Ergebnissen führen kann, wenn Sie dieser Tabelle Spalten hinzufügen oder daraus entfernen.

Quelle
Translate

Ich denke, Sie können das Entity Framework ausprobieren.

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

Laden Sie die Bibliotheken auf

using MySql.Data.MySqlClient;

Dies ist die Verbindung:

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