Je suis confronté à un problème pendant que j'insère un nouvel enregistrement de la partie GUI dans la table de base de données. J'ai créé la table de base de données Patient avec l'identification, le nom, l'âge etc .... l'id est la clé primaire d'identité. Mon problème est pendant que j'insère le nom dupliqué dans la table le contrôle devrait aller à la partie d'autre, et montre le message comme ... Ce nom est déjà sorti, pls essaye avec un autre nom ... mais dans mon codage n'obtenant pas .. ... Voici tout le code ... pls quelqu'un me signaler ce qui est mal ou comment faire cela ??? GUILayer:Problème lors de l'insertion de données de la couche GUI dans la base de données
protected void BtnSubmit_Click(object sender, EventArgs e)
{
if (!Page.IsValid)
return;
int intResult = 0;
string name = TxtName.Text.Trim();
int age = Convert.ToInt32(TxtAge.Text);
string gender;
if (RadioButtonMale.Checked)
{
gender = RadioButtonMale.Text;
}
else
{
gender = RadioButtonFemale.Text;
}
string city = DropDownListCity.SelectedItem.Value;
string typeofdisease = "";
foreach (ListItem li in CheckBoxListDisease.Items)
{
if (li.Selected)
{
typeofdisease += li.Value;
}
}
typeofdisease = typeofdisease.TrimEnd();
PatientBAL PB = new PatientBAL();
PatientProperty obj = new PatientProperty();
obj.Name = name;
obj.Age = age;
obj.Gender = gender;
obj.City = city;
obj.TypeOFDisease = typeofdisease;
try
{
intResult = PB.ADDPatient(obj);
if (intResult > 0)
{
lblMessage.Text = "New record inserted successfully.";
TxtName.Text = string.Empty;
TxtAge.Text = string.Empty;
RadioButtonMale.Enabled = false;
RadioButtonFemale.Enabled = false;
DropDownListCity.SelectedIndex = 0;
CheckBoxListDisease.SelectedIndex = 0;
}
else
{
lblMessage.Text = "Name [<b>" + TxtName.Text + "</b>] alredy exists, try another name";
}
}
catch (Exception ex)
{
lblMessage.Text = ex.Message.ToString();
}
finally
{
obj = null;
PB = null;
}
}
couche BAL:
public class PatientBAL
{
public int ADDPatient(PatientProperty obj)
{
PatientDAL pdl = new PatientDAL();
try
{
return pdl.InsertData(obj);
}
catch
{
throw;
}
finally
{
pdl=null;
}
}
}
couche DAL:
public class PatientDAL
{
public string ConString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
public int InsertData(PatientProperty obj)
{
SqlConnection con = new SqlConnection(ConString);
con.Open();
SqlCommand com = new SqlCommand("LoadData",con);
com.CommandType = CommandType.StoredProcedure;
try
{
com.Parameters.AddWithValue("@Name", obj.Name);
com.Parameters.AddWithValue("@Age",obj.Age);
com.Parameters.AddWithValue("@Gender",obj.Gender);
com.Parameters.AddWithValue("@City", obj.City);
com.Parameters.AddWithValue("@TypeOfDisease", obj.TypeOFDisease);
return com.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
com.Dispose();
con.Close();
}
}
}
Classe de bien:
public class PatientProperty
{
private string name;
private int age;
private string gender;
private string city;
private string typedisease;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Gender
{
get
{
return gender;
}
set
{
gender = value;
}
}
public string City
{
get
{
return city;
}
set
{
city = value;
}
}
public string TypeOFDisease
{
get
{
return typedisease;
}
set
{
typedisease = value;
}
}
}
Ceci est ma procédure stockée: CREATE PROCEDURE LoadData ( @Name varchar (50), @Age int, @Gender char (10), @city char (10), @TypeofDisease varchar (50) ) comme insertion dans le patient (nom, âge, sexe, ville, valeurs TypeOfDisease) (@ Nom, @ âge, @Gender, @city, @TypeofDisease) GO
Vous devez reformater le code dans la dernière liste. Et vous n'avez pas fourni la requête de base de données. Comme je peux le voir, vous avez besoin d'une valeur négative retournée pour afficher un avertissement "nom existe". – Kerido
Pouvez-vous partager avec nous la création de tables SQL SP? Ou au moins sa structure. –