Die Ausführung der Gespeicherten Prozedur und Rückkehr Zeilenanzahl zurück zum code, über den Ausgang und die sql-Parameter

Ich habe den folgenden code, entspricht die Benutzereingabe über session-Variablen. Die Gespeicherte Prozedur gibt die Zeilenanzahl, wenn die Daten in die Session-Variable entspricht den Daten in der Datenbank.

Alles funktioniert, außer ich will die Rückkehr der Zeilenanzahl, die immer eine einzelne Zeile:
In einer nussschale, besuchen Sie eine form, fügen Sie info und drücken submit. Die Daten werden in session und die gespeicherte Prozedur gibt die Daten beim Abgleich.

Obwohl das Programm funktioniert intRecCount Variablen ist immer null, anstatt die Zeile zu zählen.

Gespeicherte Prozedur:

CREATE PROCEDURE [dbo].[uspConfirmation]

    @RecordID CHAR(36),
    @LName VARCHAR(30),
    @FName VARCHAR(30),
    @MInit CHAR(1),
    @RecordCount INT OUTPUT
AS

SELECT * FROM Registration
WHERE RecordID = @RecordID AND
      LName = @LName AND
      FName = @FName AND
      MInit = @MInit

SET @RecordCount = @@ROWCOUNT

RETURN

Methode/Code:

public static DataSet Confirmation()
{ 
SqlCommand cmdSQL = new SqlCommand("uspConfirmation", Connection);
cmdSQL.CommandType = CommandType.StoredProcedure;

cmdSQL.Parameters.Add(new SqlParameter("@RecordID", SqlDbType.VarChar, 36));
cmdSQL.Parameters["@RecordID"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@RecordID"].Value = RecordIDSession;

cmdSQL.Parameters.Add(new SqlParameter("@LName", SqlDbType.VarChar, 30));
cmdSQL.Parameters["@LName"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@LName"].Value = LNameSession;

cmdSQL.Parameters.Add(new SqlParameter("@FName", SqlDbType.VarChar, 30));
cmdSQL.Parameters["@FName"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@FName"].Value = FNameSession;

cmdSQL.Parameters.Add(new SqlParameter("@MInit", SqlDbType.Char, 1));
cmdSQL.Parameters["@MInit"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@MInit"].Value = MNameSession;

cmdSQL.Parameters.Add(new SqlParameter("@RecordCount", SqlDbType.Int));
cmdSQL.Parameters["@RecordCount"].Direction = ParameterDirection.Output;

... dann ist Sie eine variable, um die Zeile zu zählen, die über eine output-variable ...

Int32 intRecCount = Convert.ToInt32(cmdSQL.Parameters["@RecordCount"].Value);

SqlDataAdapter da = new SqlDataAdapter(cmdSQL);
DataSet ds = new DataSet();
da.Fill(ds);

try {
    Connection.Open();
    cmdSQL.ExecuteNonQuery();
}
catch (Exception ex) {   
    dbMsg = ex.Message; 
}
finally {
    Connection.Close();
    cmdSQL.Dispose();
    cmdSQL.Parameters.Clear();
}
return ds;
}
  • +1 Gute, durchdachte Frage, mit viel detail. Schön.
  • Danke!!! Ich bin sehr neu in C#, aber ich Liebe es so sehr und nichts ist ermutigender als Worte von Menschen wie Ihnen. Nochmals vielen Dank!
InformationsquelleAutor Asynchronous | 2013-05-14
Schreibe einen Kommentar