Aufrufen einer gespeicherten Prozedur, die von C# - code
Ich habe eine gespeicherte Prozedur, die prüft, ob die E-Mail (& Mobile) trat bereits in der Datenbank vorhanden. Es gibt True zurück, falls es existiert (existieren), sonst False. Wenn False zurückgegeben wird (z.B. E-Mail - & mobile eindeutig sind), eine andere gespeicherte Prozedur legen Sie die Benutzer-Informationen in die Datenbank und registrieren Sie ihn. All dies geschieht auf einer einzigen Taste klicken.
BRAUCHEN SIE HILFE MIT DIESEM CODE:
EDIT 2:
protected void btnRegister_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
con.Open();
SqlCommand Cmd = new SqlCommand("usp_CheckEmailMobile", con);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.CommandText = "Registration";
Cmd.Parameters.AddWithValue("@Name", txtName.Text);
Cmd.Parameters.AddWithValue("@Email", txtEmailAddress.Text);
Cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
Cmd.Parameters.AddWithValue("@CountryCode", ddlCountryCode.Text);
Cmd.Parameters.AddWithValue("@Mobile", txtMobileNumber.Text);
//Cmd.Parameters.Add("@Result", DbType.Boolean);
SqlParameter sqlParam = new SqlParameter("@Result", DbType.Boolean);
//sqlParam.ParameterName = "@Result";
//sqlParam.DbType = DbType.Boolean;
sqlParam.Direction = ParameterDirection.Output;
Cmd.Parameters.Add(sqlParam);
Cmd.ExecuteNonQuery();
con.Close();
Response.Write(Cmd.Parameters["@Result"].Value);
}
Frage: wie mache ich das? Wie kann ich es machen das arbeiten mit minimalen Ressourcen? Bin ich das duplizieren von code? Ich will dies in die effizienteste/logische/richtige Weg.
EDIT:
ALTER PROCEDURE [dbo].[usp_CheckEmailMobile]
( @Name VARCHAR(50),
@Email NVARCHAR(50),
@Password NVARCHAR(50),
@CountryCode INT,
@Mobile VARCHAR(50),
@Result BIT OUTPUT)
AS
BEGIN
IF EXISTS (SELECT COUNT (*) FROM AUser WHERE [Email] = @Email AND [Mobile] = @Mobile)
Begin
Set @Result=0; --Email &/or Mobile does not exist in database
End
ELSE
Begin
--Insert the record & register the user
INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)
Set @Result=1;
End
END
- können Sie auch posten Sie Ihre
Stored Procedure
hier. d effizienteste Weg sein wird, zu schreiben und effizientenStored Procedure
- Finden Sie die gespeicherte Prozedur in der post bearbeitet...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die operation über Ihre
usp_CheckEmailMobile
gespeicherte Prozedur:In Ihrer gespeicherten Prozedur überprüfen, wie diese:
Diese fügt den Datensatz, wenn es nicht vorhanden ist. Sie müssen nur fügen Sie die anderen Parameter für diese gespeicherte Prozedur.
Können Sie die True /False-Wert und sagen: 'Registrierung Erfolgreich' oder 'Benutzer existiert bereits' abhängig von dem Wert, der zurückgegeben wird.
ExecuteNonQuery liefert die Anzahl der betroffenen Zeilen. Ich glaube, Sie sollten ExecuteScalar (da Ihr Verfahren nur Rückgabe von true oder false). Konvertieren Sie das Ergebnis von executescalar zu boolean.
Und anstatt der Verwendung von zwei unterschiedlichen Verfahren, können Sie kombinieren Sie in einem. Der proc wird zunächst überprüft, ob die E-Mail-und mobile existiert, wenn false gesetzt ist, wird der Benutzer Hinzugefügt werden, wenn true, dann wird nicht fügen Sie den Benutzer und geben Sie false zurück, um Sie.