Ich habe ungefähr 7 Stunden damit verbracht, dies durch Versuch und Irrtum herauszufinden. Alle Online-Beispiele, die ich gesehen habe, funktionieren entweder nicht oder nicht oder zeigen nur die Hälfte von dem, wonach ich suche.Nach einem legitimen Beispiel für den Aufruf der gespeicherten Prozedur fragen C#: MYSQL
Hier ist was ich frage: 1. Ein Beispiel für eine einfache gespeicherte Prozedur in MYSQL mit einem IN-Parameter und einem OUT-Parameter. 2. Ein Beispiel für ein FUNCTIONING (wirklich wichtig, weil online Beispiele nicht funktioniert manchmal ...) Aufruf von Visual Studio mit C#. Entweder funktioniert ein Textaufruf oder eine gespeicherte Prozedur. 3. AddWithValue ist veraltet. 4. Ich würde gerne sehen, dass der Out-Parameter tatsächlich funktioniert.
Wenn dies mit MYSQL und Visual Studio unmöglich ist, wäre das auch schön zu wissen.
MYSQL-Dokumentation ist für dieses bestimmte Beispiel nicht gründlich genug. Und pls, kein Visual Studio oder C# Hass.
Vielen Dank im Voraus! :)
EDIT:
Dies ist, was ich haben es geschafft, so weit zu tun, und es funktioniert nicht !!!
MYSQL Seite, HeidiSQL mit:
CREATE DEFINER=`root`@`localhost` PROCEDURE `login`(IN `stuff` VARCHAR(50), IN `pass` VARCHAR(50), OUT `param3` INT)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
set param3 = 0;
set param3 = (select count(*) from users where username=stuff and userpassword=pass);
select @param3;
END
Und in C# Seite versuche ich, diese Parameter zu erhalten OUT. Nun, das ist nach mehreren Iterationen, wo ich das, was die Funktion einmal war, entkernt habe und es auf zwei Punkte herunterkippt: 1. Die OUT-Parameter funktionieren nicht, und 2. Obwohl Visual Studio IN-Parameter übergibt, lehnt SQL ab um sie zu erkennen.
protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
{
using (MySqlConnection con = new MySqlConnection(strcon))
{
con.Open();
MySqlCommand com = new MySqlCommand("CALL login(@stuff, @pass, @param3);", con);
com.CommandType = CommandType.Text;
com.Parameters.Add("@stuff", MySqlDbType.VarChar);
com.Parameters["@stuff"].Value = Login.UserName;
com.Parameters.Add("@pass", MySqlDbType.VarChar);
com.Parameters["@pass"].Value = Login.Password;
try
{
obj = com.ExecuteScalar();
objparam = com.Parameters["param3"].Value;
if (Convert.ToInt32(obj) != 0)
{
Response.Redirect("Welcome.aspx");
}
else
{
Login.PasswordRequiredErrorMessage = "invalid user name and password";
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
con.Close();
}
}
Beginnen Sie mit einem [Bearbeiten], während Ihr Q im Begriff ist zu schließen. Zeige den * nächsten *, den du dir ausgedacht hast. – Drew
Ich habe bearbeitet, um meine aktuelle Iteration von dem zu zeigen, was nicht funktioniert. Dies ist das nächste, das mir einfällt. –
Danke, dass Sie gezeigt haben, was Sie versucht haben. Diese spezielle Frage ist schwierig als Lösung zusammenzustellen. Beachten Sie, dass der MySQL .NET Connector kürzlich die Funktionalität hinzugefügt hat, um 'OUT' Parameter zu handhaben. Wie lange her weiß ich es nicht. Also benutze ich zur Zeit den neuesten Connector 'Version 6.9.9.0'. – Drew