So verwende ich Visual Studio, um eine asp.net Web App in C# zu erstellen, und ich brauche Hilfe in Bezug auf Datenbanken. Ich habe ein Registrierungsformular, das ausgefüllt ist und je nachdem, welcher Radiobutton ausgewählt ist, wird die Information in einer von zwei Tabellen gespeichert. Das Problem, das ich habe, ist, wenn ich den Absenden-Button in meiner App drücke, um die Daten zu speichern, gibt es eine Fehlermeldung aus. Der kuriose Teil ist, dass die Informationen immer noch in der Tabelle gespeichert sind, obwohl ich die Fehlermeldung bekomme.SqlException wurde von Benutzercode Fehler behandelt, aber Informationen noch in der Datenbank gespeichert
Kann jemand helfen erklären? Ich habe Bilder angehängt, die meine Code/Fehlermeldung und meine Tabellen zeigen. Vielen Dank!
EDIT - Dies ist meine letzte Ausgabe von unten geschrieben:
Nachdem er mit ein paar Sachen zwicken, ich bin nicht mehr die Fehlermeldung nicht bekommen. Jetzt funktioniert das übergeordnete Optionsfeld (speichert die Informationen in der übergeordneten Tabelle), das untergeordnete Optionsfeld jedoch nicht. (Es wird nichts an die Kindertabelle gesendet.
Also nach dem Auskommentieren des 'if (parentRadBtn.Checked)' Abschnitts, so dass der 'if (child.RadBtn.Checked)' Abschnitt zuerst ist, werden Informationen gespeichert für Kinder, wenn Sie die App laufen lassen. Es scheint also, dass es ein Problem mit meinen if-Anweisungen gibt und das Programm nicht den 'if (child.RadBtn.Checked)' Teil erreicht. Ich habe versucht, es zu einem 'if else' und verschiedenen anderen Dingen zu machen keiner von ihnen arbeiten. Kann mir jemand vor Ort, was für das Programm geändert werden muss durch die Kinder an laufen? Danke.
**Updated code**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace Coursework
{
public partial class Registration : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
successLabel.Text = ("Your submission is now being stored in our database");
}
}
protected void parentRadBtn_CheckedChanged(object sender, EventArgs e)
{
if (parentRadBtn.Checked)
{
firstNameBox.Text = string.Empty;
surnameBox.Text = string.Empty;
dayDobList.Text = string.Empty;
monthDobList.Text = string.Empty;
yearDobList.Text = string.Empty;
genderList.Text = string.Empty;
postcodeBox.Text = string.Empty;
teleBox.Text = string.Empty;
emailBox.Text = string.Empty;
userBox.Text = string.Empty;
passwordBox.Text = string.Empty;
genderList.Enabled = false;
dayDobList.Enabled = false;
monthDobList.Enabled = false;
yearDobList.Enabled = false;
surnameBox.Enabled = true;
postcodeBox.Enabled = true;
teleBox.Enabled = true;
emailBox.Enabled = true;
successLabel.Text = ("");
}
}
protected void passwordBox_TextChanged(object sender, EventArgs e)
{
}
protected void childRadBtn_CheckedChanged(object sender, EventArgs e)
{
else if (childRadBtn.Checked)
{
firstNameBox.Text = string.Empty;
surnameBox.Text = string.Empty;
dayDobList.Text = string.Empty;
monthDobList.Text = string.Empty;
yearDobList.Text = string.Empty;
genderList.Text = string.Empty;
postcodeBox.Text = string.Empty;
teleBox.Text = string.Empty;
emailBox.Text = string.Empty;
userBox.Text = string.Empty;
passwordBox.Text = string.Empty;
genderList.Enabled = true;
dayDobList.Enabled = true;
monthDobList.Enabled = true;
yearDobList.Enabled = true;
surnameBox.Enabled = false;
postcodeBox.Enabled = false;
teleBox.Enabled = false;
emailBox.Enabled = false;
successLabel.Text = ("");
}
}
protected void submitBtn_Click(object sender, EventArgs e)
{
SqlConnection connect = new SqlConnection("Data Source=THEBEAST;Initial Catalog=newregDB;Integrated Security=True;Pooling=False");
{
if (parentRadBtn.Checked)
{
SqlCommand pa = new SqlCommand("INSERT INTO parent(parentID, firstname, surname, postcode, telephone, email, password) VALUES (@parentID, @firstname, @surname, @postcode, @telephone, @email, @password)", connect);
pa.Parameters.AddWithValue("@parentID", userBox.Text);
pa.Parameters.AddWithValue("@firstname", firstNameBox.Text);
pa.Parameters.AddWithValue("@surname", surnameBox.Text);
pa.Parameters.AddWithValue("@postcode", postcodeBox.Text);
pa.Parameters.AddWithValue("@telephone", teleBox.Text);
pa.Parameters.AddWithValue("@email", emailBox.Text);
pa.Parameters.AddWithValue("@password", passwordBox.Text);
connect.Open();
pa.ExecuteNonQuery();
connect.Close();
if (IsPostBack)
{
userBox.Text = "";
firstNameBox.Text = "";
surnameBox.Text = "";
postcodeBox.Text = "";
teleBox.Text = "";
emailBox.Text = "";
passwordBox.Text = "";
}
else if (childRadBtn.Checked)
{
SqlCommand ca = new SqlCommand("INSERT INTO children(childID, firstname, dob, gender, password) VALUES (@childID, @firstname, @dob, @gender, @password)", connect);
ca.Parameters.AddWithValue("@childID", userBox.Text);
ca.Parameters.AddWithValue("@firstname", firstNameBox.Text);
ca.Parameters.AddWithValue("@dob", dayDobList.Text + monthDobList.Text + yearDobList.Text);
ca.Parameters.AddWithValue("@gender", genderList.Text);
ca.Parameters.AddWithValue("@password", passwordBox.Text);
connect.Open();
ca.ExecuteNonQuery();
connect.Close();
if (IsPostBack)
{
userBox.Text = "";
firstNameBox.Text = "";
dayDobList.Text = "";
monthDobList.Text = "";
yearDobList.Text = "";
genderList.Text = "";
passwordBox.Text = "";
}
}
}
}
}
}
}
Der Fehler ist sehr klar. Es heißt, dass Sie versuchen, einen Datensatz einzufügen, der bereits in der Tabelle vorhanden ist. –
Ich weiß, es scheint klar, aber: 1. Es ist nicht wahr, ich gebe völlig unterschiedliche Informationen jedes Mal, wenn ich testen. 2. Die Informationen werden weiterhin in der Tabelle gespeichert. – ACostea
Der Fehler besagt, dass Sie versuchen, einen doppelten Schlüssel in die Tabelle Children einzufügen. Der Datensatz, den Sie einfügen, existiert bereits mit dieser ID. –