Nasıl C # bir kayıt üzerinde bir veritabanı ve döngü bağlayabilirim?

oy
36

bağlanmak ve C # kayıtların kümesi için bir veritabanını sorgulamak için en basit yolu nedir?

Oluştur 04/08/2008 saat 01:47
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
30

@Goyuix - O bellekten yazılı bir şey için mükemmeldir. Burada test - Bağlantı açılmamış bulundu. Aksi takdirde çok güzel.

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"]);
            }
        }
    }
}
Cevap 04/08/2008 saat 02:31
kaynak kullanıcı

oy
16

Çok kabaca ve bellekten ben bu laptop kodu olmadığı için:

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);
      }
    }
  }
}
Cevap 04/08/2008 saat 02:07
kaynak kullanıcı

oy
11

Bu kesinlikle bunu yapmak için iyi bir yoldur. Eğer LINQ to SQL destekleyen bir veritabanı kullanarak için gerçekleşmesi durumunda Ama, bu çok daha eğlenceli olabilir. Bunun gibi bir şey bakabilirsiniz:

MyDB db = new MyDB("Data Source=...");
var q = from db.MyTable
        select c;
foreach (var c in q)
  Console.WriteLine(c.MyField.ToString());
Cevap 04/08/2008 saat 05:45
kaynak kullanıcı

oy
7

Bu (DataReader bundan daha hızlıdır) alternatif bir yoludur:

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);
Cevap 05/08/2008 saat 15:17
kaynak kullanıcı

oy
4

Eğer sütun çok sayıda okuma niyetiyle ya da örneğin sıra sayılarını önbelleğe ve kesinlikle yazılan yöntemleri erişen değer kaydeder varsa

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());
  }
}
Cevap 15/09/2008 saat 20:07
kaynak kullanıcı

oy
3

Bir SQL Server veritabanı (Sürüm 7 ve üstü) sorguluyorsunuz Eğer karşılık gelen sınıflarıyla OleDb sınıfları değiştirmelisiniz System.DataSystem.Data.SqlClient ad ( SqlConnection , SqlCommand ve SqlDataReader bu sınıflar SQL Server ile çalışmak üzere optimize edilmiş gibi).

Unutulmaması gereken bir diğer şey bu tabloya sütun eklemek veya kaldırmak eğer daha sonra beklenmedik sonuçlara yol açabilecek bu gibi tüm seçmek 'asla' gerektiğidir.

Cevap 21/08/2008 saat 15:19
kaynak kullanıcı

oy
1

Sana varlık çerçevesini deneyebilirsiniz sanırım.

using (SchoolDBEntities ctx = new SchoolDBEntities())
{
     IList<Course> courseList = ctx.GetCoursesByStudentId(1).ToList<Course>();
     //do something with courselist here
}
Cevap 05/09/2012 saat 20:11
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more