Ich arbeite an einem Projekt, für das eine Registrierungsoption erforderlich ist. Ich habe bereits ein Formular erstellt, das ein Benutzer ausfüllen kann und erfolgreich in der Datenbank speichert, wenn jedes Textfeld ausgefüllt wurde. Ich muss einige von ihnen optional haben.C# Registrierungsformular: Optionale Textfelder
private void button1_Click(object sender, EventArgs e)
{
Registercar(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text));
}
private static void Registercar(string make, string model, int year)
{
var con = GetConnection();
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO user_car (ID,make,model,year) VALUE (@ID, @make, @model, @year)";
cmd.Prepare();
cmd.Parameters.AddWithValue("@ID", 0);
cmd.Parameters.AddWithValue("@make", make);
cmd.Parameters.AddWithValue("@model", model);
cmd.Parameters.AddWithValue("@year", year);
cmd.ExecuteNonQuery();
if (con !=null) { con.Close(); };
MessageBox.Show("Car successfully registered");
}
catch (Exception ex)
{
MessageBox.Show(Convert.ToString(ex));
}
finally
{
con.Close();
}
}
Der obige Code ist der Teil des Registers, in dem der Benutzer die Möglichkeit hat, ein Auto zu registrieren, die auf ihr Konto gebunden werden. Wenn sie das Hinzufügen eines Autos wählen, müssen sie die Marke und das Modell eingeben, während das Jahr optional ist. Wenn sie alle Informationen eingeben, werden die Informationen erfolgreich in der Datenbank gespeichert.
jedoch Wenn ich versuche, das Jahr Option leer zu lassen, erhalte ich folgende Fehlermeldung: „Eine nicht behandelte Ausnahme des Typs‚System.FormatException‘ist in mscorlib.dll aufgetreten
Zusätzliche Informationen: Eingabezeichenfolge war nicht in einem korrekten Format. "
Das sagt mir, dass ich es höchstwahrscheinlich nicht lassen darf, es leer zu lassen. Ich habe versucht, verschiedene Optionen herauszufinden, bei denen ich es leer lassen und die anderen Informationen immer noch in der Datenbank speichern könnte. Die erste Option, die ich versuchte, kam aus diesem Beitrag: How can we declare Optional Parameters in C#.net? Ich habe versucht, das Jahr optional zu machen, um einen Standardwert zu meinem Jahr Parameter Eingabe:
private static void Registercar(string make, string model, int year = 0)
jedoch noch ich nach wie vor die gleichen Fehler. Die nächste Option, die ich ausprobierte, kam von diesem Beitrag: How can you use optional parameters in C#? Die erste Antwort war die gleiche wie die vorherige, setzen Sie den Parameter auf einen festgelegten Wert. Eine andere Antwort weiter unten schlug vor, "System.Runtime.InteropServices" zu verwenden und den Parameter auf [Optional] zu setzen. Ich habe es versucht, aber ich bekomme den gleichen Fehler wie zuvor. Ich dachte, dass es mit der Tatsache zu tun hatte, dass ich versuche, String in einen int zu konvertieren und zu leeren. Eine schnelle Suche führte mich zu diesem Beitrag: Convert string to integer Hier habe ich gesagt, ich versuche ich kann int.Parse zu verwenden, so dass ich es einrichten wie diese
private void button1_Click(object sender, EventArgs e)
{
int year = int.Parse(textBox3.Text.Trim());
Registercar(textBox1.Text, textBox2.Text, year);
}
gleichen Fehler wie zuvor. Weiter habe ich versucht, die „Int32.TryParse()“, der überprüft, wenn die Zeichenfolge ein int enthält, wenn nicht, Ausgabe einen Integer-Wert
private void button1_Click(object sender, EventArgs e)
{
int year;
string str = textBox3.Text.Trim();
Registercar(textBox1.Text, textBox2.Text, Int32.TryParse(str, out year);
}
Jetzt ist es mir sagt, ich kann nicht konvertieren von ‚Bool‘ auf ' int '
An diesem Punkt habe ich fast fast aufgegeben.
Die Sache, die zur Zeit funktioniert, ist, dass, wenn jede Box ausgefüllt ist, es erfolgreich die Informationen in der Datenbank speichert. Allerdings brauche ich einige der Textfelder, die optional sind, und ich kann das nicht zum Funktionieren bringen.
Es tut mir leid für die lange Post. Ich hoffe, dass jemand in der Lage ist, mit einem Vorschlag zu helfen, oder zu kommen :)
ich sehe. Ich habe den int.TryParse falsch benutzt, das macht jetzt Sinn und ich habe es zum Laufen gebracht. Danke vielmals :). Schnelle Frage, kann ich das Jahr als leere Zeichenfolge festlegen? Also in meiner Datenbank, unter "Jahr" wäre es nur leer anstatt "0" zu zeigen? –
Ich habe meine Antwort bearbeitet. Btw, um "Danke" zu sagen, kannst du meine Antwort als Lösung markieren;) – Nino
Ahh ja, tut mir leid. Ich habe in der Zwischenzeit an etwas anderem gearbeitet und habe es vergessen :) Danke nochmal! –