Vă mulțumim pentru susținere

Cum mă conectez la o bază de date și o buclă peste un set de înregistrări din C #?

Care este cel mai simplu mod de a conecta și de a interoga o bază de date pentru un set de înregistrări în C #?

0
adăugat editat
Doar pentru a verifica dublu, link-ul pe care faceți clic în top nav este într-adevăr la un sub-web diferit, nu la o vizualizare a unei liste sau a unei biblioteci din același site, corect? Am văzut acest lucru când articolele din același site au fost adăugate la bara de navigație de top și au făcut clic, deoarece sunteți, de fapt, în același site.
adăugat autor Lori

10 răspunsuri

Așa că m-am gândit la asta și a fost destul de banal, dar ignoranța este fericirea. Legăturile din navigația de sus au fost configurate ca titluri în funcție de controlul de navigare publicat pe care l-am văzut din secțiunea setări/navigare site. Odată ce am schimbat setarea pentru a afișa subsite-uri, controlul a arătat acum fiecare site de pe navigația de top în plus față de anteturi. Am șters anteturile și a rămas cu link-urile site-ului care funcționau bine și CSS pentru link-ul activ funcționa bine. Acest lucru mă forțează acum să întreb de ce aș folosi anteturile de pe navigația de sus. Poate lipsesc ceva evident.

Linia de jos este că site-urile de publicare de-a lungul destul de curba de învățare pentru administratori provenind de la portalul de bază de colaborare creat utilizând navigarea WSS 3.

2
adăugat

Ați schimbat atributurile controalelor de navigare prin arborele de navigație sau sursa de date în pagina principală?

Dacă da, care sunt setările dvs.?

Anders Rask

1
adăugat
Nu am schimbat nimic cu setările de pagină principală pentru controlul navigației de sus. Setările sunt implicite în măsura în care știu.
adăugat autor Jim McKeeth

@Goyuix - este excelent pentru ceva scris din memorie. testat aici - a constatat că conexiunea nu a fost deschisă. Altfel foarte frumos.

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"]);
            }
        }
    }
}
0
adăugat

Când se uită la html, clasele css sunt atribuite corect? Sau este site-ul părinte cel care a obținut csp?

Dacă este o problemă css, atunci poate foaia dvs. de stil nu este încărcată corect pe acest subsite. În caz contrar, sitemapprovider nu determină faptul că site-ul pe care îl vizitați în prezent se potrivește cu elementul din top nav. Link-urile către subsite sunt create automat pentru dvs. sau ați pus legătura? Dacă ați tastat sau ați copiat și ați lipit linkul, este posibil să aveți nevoie să vă asigurați că SharePoint știe că vă referiți la o adresă URL internă. Uneori trebuie să modificați adresa URL eliminând paginile/default.aspx sau ceva similar.

0
adăugat
Corect, dar cum au fost adăugate subsitele? Sharepoint a făcut-o pentru dvs. atunci când ați creat subsitele sau ați făcut-o manual? Cum rămâne cu HTML? Ai verificat asta?
adăugat autor Ray
Bara de top nav a fost creată inițial cu publicarea neactivată. A fost un site de colaborare numai astfel încât subsitele au fost doar un singur strat ca limitare cu furnizorul WSS. Legăturile site-ului au fost create prin pagina de setări a site-ului UI și fiecare site a mostenit navigarea de la părinte. Tema este aceeași. Stilul face parte dintr-o temă personalizată care a fost creată.
adăugat autor Jim McKeeth

Este cu siguranță o modalitate bună de a face acest lucru. Dar dacă tu se întâmplă să folosești o bază de date care suportă LINQ la SQL, poate fi mult mai distractivă. Poate arata cam asa:

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

Foarte brutal și din memorie, deoarece nu am cod pe acest laptop:

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);
      }
    }
  }
}
0
adăugat

Acesta este un mod alternativ (DataReader este mai rapid decât acesta):

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);
0
adăugat

Dacă interogați o bază de date SQL Server (Versiunea 7 și mai sus), ar trebui să înlocuiți clasele OleDb cu clasele corespunzătoare în System.Data.SqlClient nume spațiu ( SqlConnection , SqlCommand și SqlDataReader ), deoarece aceste clase au fost optimizate pentru a lucra cu SQL Server.

Un alt lucru de reținut este că nu trebuie să selectați niciodată toate, deoarece acest lucru ar putea duce mai târziu la rezultate neașteptate dacă adăugați sau eliminați coloane în acest tabel.

0
adăugat

Dacă intenționați să citiți un număr mare de coloane sau înregistrări, merită, de asemenea, salvarea în cache a ordinelor și accesarea metodelor puternic tipizate, de ex.

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());
  }
}
0
adăugat

Cred că puteți încerca cadrul entității.

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