2016-12-05 10 views
0

ストアドプロシージャにパラメータを渡す際に問題があります。エラーはスローされませんが、望ましい出力は取得できません。 .csは次のとおりです。ASP.NET WinFormからストアドプロシージャにパラメータを渡す

private void btnSubmit_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (cbRegions.SelectedIndex > 0) 
     { 
      con = new SqlConnection(connectionString); 
      cmd = new SqlCommand("dbo.SectionIncharge", con); 
      cmd.Parameters.Add("@RegionName", SqlDbType.VarChar, 50).Value = cbRegions.SelectedItem.ToString(); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Connection = con; 
      con.Open(); 
      DataTable table = new DataTable(); 
      table.Load(cmd.ExecuteReader()); 
      dgvResults.DataSource = table; 
      con.Close(); 
     } 
    } 
    catch 
    { 

    } 
} 

.sqlです:

ALTER PROCEDURE [dbo].[SectionIncharge] @RegionName varchar(50) --name 
AS 
select UserName 
from SystemUser 
where Description LIKE 'RD OFFICE ' + @RegionName AND 
Enable = 'Y' 
GO 

私は二重のSQL Server Management Studioの中で細かい作業が、私はWinフォーム、ノー出力から、それを呼び出すようにしようとしていたときに、ストアドプロシージャをチェックしました。誰かが助けてくれますか?ありがとう

+0

SSMSでストアドプロシージャを呼び出すのが問題ない場合は、問題はC#コードであり、dbコードではありません。 –

+0

誰かがすでにExecuteNonQueryをあなたに指摘しています... また、LIKEを使用している場合は、プロキシのパラメータ値に '%'を連結したいと思うかもしれません。 – AntDC

答えて

0

方法ExecuteNonQuery(名前から推測できるように)は単にクエリを実行し、サーバーからの出力は受け取りません。

ExecuteReaderメソッドと結果を返さなければならないので、選択した結果を取得する必要があります(リンク先のMSDNページの下の例を参照)。

グリッドのソースとしてデータテーブルを使用している場合は、SqlDataAdapterクラスを使用し、そのようなデータテーブルを埋め込む方法はFillです。

+0

私はコードを更新しましたが、役に立たないです。 dubugging中、カーソルは 'con = new SqlConnection(" connectionString ");から' catch'ステートメントにジャンプしています。 – Jogi

+0

@RehanKhan例外処理コードを 'catch'から' catch(Exception exc) 'に変更すると、デバッグ時に例外メッセージを受け取ることができます。おそらく接続文字列に問題があります。 –

+0

はいInnerExceptionメッセージが表示されました。その文字列はJSON形式ではありません。 – Jogi

関連する問題