2017-11-27 23 views
0

私はC#で書かれた簡単なプログラムを持っています。主な目的はデータのアーカイブです。以下は、プログラムの外観のスナップショットです。テキストボックス表示プログラムで複数の行数の結果を返す

enter image description here

示すように、ボタンがクリックされるたびに、メッセージは、プログラムの左側に大きなテキストボックスに表示されます。今、私はRow Countという別のボタンを実装しています。この関数の目的は、そのボタンをクリックすると、自分のSQLスクリプトの1つを実行し、テーブル内のカウント数をテキストボックスに表示します。

このSQLスクリプトには、1つの行カウントクエリだけでなく、複数のテーブルの行カウントクエリが含まれています。ここでの抜粋です:

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 

私はこれを達成する方法は、ExecuteScalarがある知っているが、ここでの問題は、私は私のC#のコード内のSQLクエリを記述する必要はありませんです。むしろ私のプログラムはそのスクリプトを読んで、プログラムのテキスト表示にその数を表示したい。それをSQLサーバで結果を得るのと同じように考えてください。代わりに結果が私のプログラムのテキストボックスに表示されます。どんな提案も役に立ちます。

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

あるので、いただきました、あなたのコードに問題Execute_StoredProは私のSP名とruntestsと書いている下記のコードから呼び出すことができますか? – CodingYoshi

+0

問題はありません。私はそれを実現する方法を理解できません。 –

+0

スクリプトの実行結果を取得できましたか?はいの場合は、複数の結果を得るために繰り返し成功しましたか? - 論理的には、ソリューションを取得するというコンセプトはOKですが、苦労している具体的な詳細は不明です。 – hsoesanto

答えて

0

はSQLでストアドプロシージャを作成し、フロントエンドに、カウントを返す:

はここにも私のC#のコードの一部です。 SPは私の接続

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

私はストアドプロシージャを使用したくない、私はちょうどSQLスクリプトを読んで、テキストボックスに表示したい。 –

関連する問題