2009-03-04 4 views
0

In jeder ASP.NET-Anwendung, die ich geschrieben habe, würde ich Anzahl der Anfrage an die Datenbank vor der Ausgabe der Informationen auf der Webseite machen.Wie kann ich mehrere Datenbankanforderungen in ASP.NET C# ausführen?

Zum Beispiel:

var DataTable1 = GetDataTable("Select * From Customers"); 
var DataTable2 = GetDataTable("Select * From Products"); 
var DataTable3 = GetDataTable("Select * From Orders"); 

Soweit mir bekannt ist, würde der Code oben machen 3 separate Ausflüge in die Datenbank und würde sie einer nach dem anderen tun.

Kann ich meine parametrisierten SQL-Anweisungen trotzdem zusammentragen und nur einen Trip zum Datenbankserver machen?

+0

Ein besserer Weg, dies zu beschreiben, würde „mehr Datenbankabfragen in einer Reise“, nicht „parallel Datenbankanforderungen“ sein. "Parallel" bedeutet, dass sie alle gleichzeitig stattfinden, was nicht das zu sein scheint, was Sie suchen; Es gibt Möglichkeiten, dies auch zu tun, obwohl das für eine Webseite wenig Sinn macht. –

+0

Danke für die Köpfe hoch. Ihr Recht. Ich habe den Titel geändert :) – GateKiller

Antwort

6
var SqlString = "SELECT * FROM Customers; SELECT * FROM Products; SELECT * FROM ORDERS;"); 
var ds = GetDataSet(SqlString); 
var DataTable1 = ds.Tables(0); 
var DataTable2 = ds.Tables(1); 
var DataTable3 = ds.Tables(2); 
-1

Erstellen Sie eine Thread-Klasse und platzieren Sie eine Methode in dieser Klasse, die eine String-Abfrage als Eingabe akzeptiert: Erstellen Sie dann ein Thread-Objekt und starten Sie das Objekt.

Check this out http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx

+0

Das würde noch 3 Fahrten zur Datenbank machen, außer es würde sie zur gleichen Zeit tun. Nicht wirklich die Lösung, nach der ich gesucht habe. – GateKiller

0

Verwenden Semikolons SQL-Anweisungen zu trennen und reader.NextResult jeden Satz zu erhalten. Ihr Code wird am Ende so aussehen.

Using con As New SqlConnection 
     Using cmd As New SqlCommand("Select * From Customers; Select * From Products; Select * From Orders") 
      Using reader = cmd.ExecuteReader 
       Dim dt1 As DataTable 
       dt1.Load(reader) 

       reader.NextResult() 

       Dim dt2 As DataTable 
       dt2.Load(reader) 

       reader.NextResult() 


       Dim dt3 As DataTable 
       dt3.Load(reader) 

      End Using 
     End Using 
    End Using 
1

Meine Lösung:

SqlConnection con = new SqlConnection("Server=CLASS-III-WKS10\\SQLEXPRESS;Initial 
Catalog=wind;Integrated Security=True"); 
int[] id=new int[9]; 
int i = 0; 
page_load() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("select *from windmill", con); 
    SqlDataReader rd = cmd.ExecuteReader(); 
    while (rd.Read()) 
    { 
     id[i] = rd.GetInt32(9); 
     i++; 
     //MessageBox.Show(id.ToString()); 
    } 
    rd.close(); 
    SqlCommand cmd1 = new SqlCommand("Update windmill set State='Stopped',PmState='Not Available'where Id=0", con); 
    cmd1.ExecuteNonQuery(); 
} 
Verwandte Themen