Bagaimana cara menghubungkan ke database dan loop di atas recordset di C#?

Apa's cara yang paling sederhana untuk melakukan koneksi dan query database untuk set data di C#?

Larutan

@Goyuix-yang's sangat baik untuk sesuatu yang tertulis dari memori. diuji di sini -- ditemukan koneksi wasn't dibuka. Jika tidak sangat bagus.

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

Sangat kasar dan dari memori karena aku don't memiliki kode pada laptop ini:

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

Yang's pasti cara yang baik untuk melakukannya. Tapi anda jika anda kebetulan menggunakan sebuah database yang mendukung LINQ untuk SQL, itu bisa menjadi jauh lebih menyenangkan. Hal ini dapat terlihat seperti ini:

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

Ini adalah cara alternatif (Hexadecimal adalah lebih cepat dari yang satu ini):

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);
Komentar (0)

Jika anda berniat membaca sejumlah besar kolom atau catatan itu's juga layak caching ordinals dan mengakses kuat-diketik metode, misalnya

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

Jika anda query database SQL Server (Versi 7 dan versi lebih tinggi) anda harus mengganti OleDb kelas sesuai dengan kelas di Sistem.Data.SqlClient namespace (SqlConnection, SqlCommand dan SqlDataReader) sebagai kelas-kelas yang telah dioptimalkan untuk bekerja dengan SQL Server.

Hal lain yang perlu diperhatikan adalah bahwa anda harus 'jangan' pilih semua karena hal ini dapat menyebabkan hasil yang tak terduga di kemudian hari jika anda menambahkan atau menghapus kolom dalam tabel ini.

Komentar (0)

Saya kira, anda dapat mencoba entity framework.

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

Biaya perpustakaan

using MySql.Data.MySqlClient;

Ini adalah koneksi:

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