Ich habe Probleme bekommen, meine Beilage zur Arbeit zu bringen. Ich habe darüber nachgedacht, basierend auf dem ausgewählten Index von zwei Comboboxen (1. cboCustomer 2. cboProduct) und einer Textbox (RegistrationDate). Der Fehler, den ich am meisten bekomme, würde damit zusammenhängen, dass die CustomerID Null ist; von dem ich dachte, dass es automatisch generiert werden sollte. Was mich am meisten verwirrt, sind natürlich die Formularspezifikationen. Die cboCustomer-Combobox muss den Namen des Kunden anzeigen. welches nicht Teil der Registrierungstabelle ist. Und die cboProduct Combobox muss den Produktnamen anzeigen; Das bezieht sich auch nicht auf die Registrierungstabelle. In der Registrierungstabelle muss ich die Einfügung vornehmen, aber die Combobox wird mit zwei Methoden geladen, die den Namen aus den Tabellen Customer und Product abrufen, die nicht für die Einfügung verwendet werden können. Wenn ich versuche, nur das Registrierungsdatum einzufügen, bekomme ich eine Fehlermeldung, dass ProductCode nicht Null sein kann. Ich bin auch ein wenig verwirrt, wenn die AddRegistration-Methode die Einfügung ausführen wird, obwohl ein boolescher Wert zurückgegeben wird. Danke für jede Hilfe und für Ihre Zeit.C# -Ausgabe beim Versuch, in die Datenbankdatei einzufügen
Die meisten der folgenden Code wurde ein paar Mal geändert, weil ich mehrere Lösungen ohne Erfolg versucht habe.
Dies ist der Code, in dem ich die Werte abrufen muss, die an die AddRegistration-Methode übergeben werden sollen.
public void PutRegistrationData(Registration registration)
{
registration.RegistrationDate = registrationDateTextBox.Text;
registration.ProductCode = productComboBox.SelectedValue.ToString();
}
Dies ist der Code für die Schaltfläche auf dem Formular, das den Einsatz in der AddRegistration auslöst.
private void btnRegister_Click(object sender, EventArgs e)
{
if (this.IsPresent(registrationDateTextBox.Text))
{
registration = new Registration();
this.PutRegistrationData(registration);
try
{
RegistrationDB.AddRegistration(registration);
MessageBox.Show("The product was entered successfully", "Registration Success");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
}
}
}
Dies ist der Code, den ich für meine einfügen in AddRegistration der RegistrationDB-Klasse habe.
public static bool AddRegistration(Registration registration)
{
try
{
SqlConnection connection = TechSupportDB.GetConnection();
string insertStatement = "INSERT INTO Registrations (ProductCode, RegistrationDate" +
"VALUES (@ProductCode,@RegistrationDate)";
SqlCommand insertCommand = new SqlCommand(insertStatement, connection);
//insertCommand.Parameters.AddWithValue("@CustomerID", registration.CustomerID);
insertCommand.Parameters.AddWithValue("@ProductCode", registration.ProductCode);
insertCommand.Parameters.AddWithValue("@RegistrationDate", registration.RegistrationDate);
insertCommand.Connection = connection;
connection.Open();
insertCommand.ExecuteNonQuery();
connection.Close();
return true;
}
catch
{
return false;
}
}
}
}
Der INSERT-Befehl fehlt die close Parenthesys nach der Feldliste. Ist es ein Tippfehler? – Steve
Entfernen Sie auch den leeren Catch in der AddRegistration, weil Sie auf diese Weise die echte Ausnahme verlieren, die Ihnen sagt, was mit Ihrer Anfrage falsch ist – Steve
Danke für die Antwort. Und es könnte ein Tippfehler sein, ich habe mehrere Stunden mit diesem Code verbracht und den Einschub ein paar Mal geändert. – JaceLandrum