2017-11-27 1 views
0

Ich habe ein einfaches Programm in C# geschrieben. Der Hauptzweck ist die Datenarchivierung. Im Folgenden finden Sie eine Momentaufnahme des Programms.Zurückgeben mehrerer Zeilenanzahl Ergebnisse auf Textbox-Display-Programm

enter image description here

Wie gezeigt, wann immer eine Schaltfläche geklickt wird, wird Meldung auf dem großen Textfeld auf der linken Seite des Programms angezeigt werden. Im Moment implementiere ich eine weitere Schaltfläche namens Zeilenanzahl. Der Zweck dieser Funktion ist, wenn ich auf diese Schaltfläche klicke, wird sie eines meiner SQL-Skripte ausführen und die Anzahl der Zählungen in einer Tabelle im Textfeld anzeigen.

Innerhalb dieses SQL-Skript enthält Zeilenanzahl Abfragen für mehrere Tabellen, nicht nur eine Zeile Anzahl Abfrage. Hier ist ein Ausschnitt davon:

SELECT COUNT(*) AS [PromotionEventRows] FROM PromotionEvent (NOLOCK) 
select top 1 EventCode as [PE - PE Code], LastChangeDate FROM PromotionEvent (NOLOCK) ORDER BY LastChangeDate DESC 

SELECT COUNT(*) AS [PromotionBenefitRows] FROM PromotionBenefit (NOLOCK) 
select top 1 PromotionBenefitCode as [PB - PB Code], LastChangeDate FROM PromotionBenefit (NOLOCK) ORDER BY LastChangeDate DESC 

SELECT COUNT(*) AS [CardTypeBenefitRows] FROM CardTypeBenefit (NOLOCK) 
select top 1 CardTypeBenefitID, LastChangeDate FROM CardTypeBenefit (NOLOCK) ORDER BY LastChangeDate DESC 

Ich weiß, es ist eine Methode ExecuteScalar dies zu erreichen, aber das Problem hier ist, ich weiß nicht SQL-Abfrage in meinem C# Code schreiben möchten. Ich möchte vielmehr, dass mein Programm dieses Skript liest und die Anzahl in der Textanzeige im Programm anzeigt. Stellen Sie sich vor, Sie erhalten die Ergebnisse in SQL Server, aber stattdessen werden die Ergebnisse in meinem Programmtextfeld angezeigt. Jeder Vorschlag wäre hilfreich.

Hier ist auch # -Code Teil meines C:

try 
      { 
       using (SqlConnection con = new SqlConnection(constr)) 
       { 
        con.Open(); 
        FileInfo file = new FileInfo("Directory of that SQL script"); 
        string script = file.OpenText().ReadToEnd(); 
        Server server = new Server(new ServerConnection(con)); 
        server.ConnectionContext.ExecuteNonQuery(script); 
        Display("Whatever message display on textbox"); 
        con.Close(); 



       } 

      } 
      catch (Exception ex) 
      { 

       textBox1.AppendText(string.Format("{0}", Environment.NewLine)); 
       textBox1.AppendText(string.Format("{0} MainPage_Load() exception - {1}{2}", _strThisAppName, ex.Message, Environment.NewLine)); 
       Display(ex.Message + "message"); 
       textBox1.AppendText(string.Format("{0}", Environment.NewLine)); 
       Debug.WriteLine(string.Format("{0} MainPage_Load() exception - {1}", _strThisAppName, ex.Message)); 


      } 
+0

so was ist das Problem mit Ihrem Code? – CodingYoshi

+0

Kein Problem, ich kann mir einfach nicht vorstellen, wie ich es umsetzen soll. –

+0

Konnte das Ergebnis beim Ausführen des Skripts erzielt werden? Wenn ja, haben Sie erfolgreich mehrere Ergebnisse erzielt? - Logischerweise ist Ihr Konzept der Lösung in Ordnung, aber die spezifischen Details, die Sie kämpfen, ist unklar. – hsoesanto

Antwort

0

eine gespeicherte Prozedur in SQL schreiben und die Zählung zum vorderen Ende zurückzukehren. SP kann aus dem folgenden Code aufgerufen werden, in dem Execute_StoredPro Namen meines SP und runTests ist meine Verbindung

 SqlCommand spcmd = new SqlCommand("Execute_StoredPro", runTests); 
     spcmd.CommandTimeout = 0; 
     spcmd.CommandType = CommandType.StoredProcedure; 
     spcmd.ExecuteNonQuery(); 
+0

Ich möchte keine gespeicherte Prozedur verwenden, ich möchte nur die SQL-Skripte lesen und auf dem Textfeld anzeigen. –

Verwandte Themen