2016-12-05 3 views
0

Ich habe Probleme mit der Übergabe von Parameter an die gespeicherte Prozedur. Es wird kein Fehler ausgegeben, aber die gewünschte Ausgabe kann nicht erfasst werden. .cs ist:Übergeben von Parameter an gespeicherte Prozedur von 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 ist:

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

ich doppelt gespeichert eingecheckt haben Verfahren arbeiten in SQL Server Management Studio in Ordnung, aber wenn ich versuche, es von WinForms zu nennen, ohne Ausgang. Kann mir bitte jemand helfen. Danke

+0

Wenn der Aufruf der gespeicherten Prozedur in SSMS in Ordnung ist, liegt das Problem an Ihrem C# -Code, nicht am DB-Code. –

+0

Jemand hat bereits ExecuteNonQuery auf Sie hingewiesen ... Auch wenn Sie LIKE verwenden, möchten Sie vielleicht ein '%' zu Ihrem Parameterwert in der Prozedur verketten – AntDC

Antwort

0

Methode ExecuteNonQuery (wie es aus dem Namen erraten werden kann) führt nur Abfrage und erhält keine Ausgabe vom Server.

So müssen Sie Ergebnisse erhalten, die Sie auswählen - Sie müssen ExecuteReader Methode verwenden und Ergebnis verarbeiten, das es zurückgibt (siehe Beispiel am Ende der MSDN-Seite, die ich verknüpft habe).

Wenn Sie Datenquellen als Quelle für Ihr Raster verwenden, können Sie auch SqlDataAdapter Klasse verwenden und es ist Fill Methode, um eine solche Datentabelle zu füllen.

+0

Ich habe den Code aktualisiert, aber ohne Erfolg. Während des Dubgings springt der Cursor aus der Zeile con = new SqlConnection (connectionString); – Jogi

+0

@RehanKhan Wenn Sie den Ausnahmebehandlungscode von 'catch' in so etwas wie' catch (Exception exc) 'ändern, können Sie eine Ausnahmebedingungsnachricht während der Debugzeit erhalten. Wahrscheinlich stimmt etwas mit Ihrer Verbindungszeichenfolge nicht. –

+0

Ja, ich habe das getan, um die InnerException-Nachricht zu sehen, und es heißt: String ist nicht JSON-formatiert. Das Format des Initialisierungsstrings entspricht nicht den Spezifikationen, die bei Index 0 beginnen. " – Jogi

Verwandte Themen