c# - 如何处理 C# 应用程序上的数据库重复项?
问题描述
在我的程序中,我有 3 个主要功能 INSERT UPDATE DELETE,该项目是关于在数据库中创建机器配置文件来更新和删除它。
到目前为止,我的代码正在运行,但我有一些重复的问题,当我想在我的代码中更新时,我会检查一个配置文件是否已经存在,所以它想要复制它但是在这里当我更新它时复制记录,当我删除做同样的事情。
这是表达我的问题的视频的链接:https ://vimeo.com/317221805
这是我的代码:
private void Sauv_Btn_Click_1(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(cnString);
using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
{
con.Open();
check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);
using (SqlDataReader reader = check_User_Name.ExecuteReader())
{
reader.Read();
int count = reader.GetInt32(0);
}
int UserExist = (int)check_User_Name.ExecuteScalar();
if (MessageBox.Show("Voulez-vous sauvgarder la modification de cette fiche client ?", "Sauvgarde fiche client...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
if (UserExist == 0)
{
MessageBox.Show("Le Client n'existe pas Renseigner le numero de Serie UNIQUE obligatoirement");
}
else if (UserExist > 0)
{
//Fihce Machine-----------------------------------------------------------------------------------------------------------------
Methodes.dt.Rows[rowId]["N_SERIE"] = textBoxNumSer.Text.Trim();
Methodes.dt.Rows[rowId]["TYPE_DE_MACHINE"] = textBoxTpMch.Text.Trim();
Methodes.dt.Rows[rowId]["N_MOTEUR"] = textBoxNumMtr.Text.Trim();
Methodes.dt.Rows[rowId]["PONT_AVANT"] = textBoxPnAv.Text.Trim();
Methodes.dt.Rows[rowId]["PONT_ARRIERE"] = textBoxPnAr.Text.Trim();
Methodes.dt.Rows[rowId]["BOITE_DE_VITESSE"] = textBoxBtVit.Text.Trim();
Methodes.dt.Rows[rowId]["DISTRIBUTEUR_AVANT"] = textBoxDisAv.Text.Trim();
//------------------------------------------------------------------------------------------------------------------------
Methodes.adap.Update(Methodes.dt);
MessageBox.Show("Fiche Sauvgarder avec succés");
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
Form1 form1 = new Form1();
form1.LoadData();
}
}
private void Vld_Btn_Click_1(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(cnString);
using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
{
con.Open();
check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);
using (SqlDataReader reader = check_User_Name.ExecuteReader())
{
reader.Read();
int count = reader.GetInt32(0);
}
int UserExist = (int)check_User_Name.ExecuteScalar();
if (UserExist == 0)
{
try
{
if (textBoxNumSer.Text.Trim() == ("N_SERIE"))
{
MessageBox.Show("N°SERIE Existant vous pouvez le modifier ou le supprimer");
}
if (textBoxNumSer.Text.Trim() == "")
{
MessageBox.Show("Remplissez les champs vides.... et renseigner le numero de Serie UNIQUE obligatoirement");
}
else
{
DataRow dr;
dr = Methodes.dt.NewRow();
//Fihce Machine-----------------------------------------------------------------------------------------------------------------
dr["N_SERIE"] = textBoxNumSer.Text.Trim();
dr["TYPE_DE_MACHINE"] = textBoxTpMch.Text.Trim();
dr["N_MOTEUR"] = textBoxNumMtr.Text.Trim();
dr["PONT_AVANT"] = textBoxPnAv.Text.Trim();
dr["PONT_ARRIERE"] = textBoxPnAr.Text.Trim();
dr["BOITE_DE_VITESSE"] = textBoxBtVit.Text.Trim();
dr["DISTRIBUTEUR_AVANT"] = textBoxDisAv.Text.Trim();
//------------------------------------------------------------------------------------------------------------------------
Methodes.dt.Rows.Add(dr);
Methodes.adap.Update(Methodes.dt);
try
{
MessageBox.Show("Fiche Sauvgarder avec succés");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
con.Close();
}
else
{
MessageBox.Show("Ce Numero de Serie existe déjà entrez un nouveau svp");
}
}
Form1 form1 = new Form1();
form1.LoadData();
}
private void Supp_Btn_Click_1(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(cnString);
using (SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Fiche_Machine] WHERE ([N_SERIE] = @N_SERIE)", con))
{
con.Open();
check_User_Name.Parameters.AddWithValue("@N_SERIE", textBoxNumSer.Text);
using (SqlDataReader reader = check_User_Name.ExecuteReader())
{
reader.Read();
int count = reader.GetInt32(0);
}
int UserExist = (int)check_User_Name.ExecuteScalar();
if (UserExist > 0)
{
try
{
if (textBoxNumSer.Text.Trim() == "")
{
MessageBox.Show("La fiche est vide !! Veuillez Selectionner une fiche à supprimer");
}
else
{
try
{
if (MessageBox.Show("êtes-vous sûr de vouloir supprimer ?", "Suppression...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Methodes.dt.Rows[rowId].Delete();
Methodes.adap.Update(Methodes.dt);
MessageBox.Show("Fiche Supprimer avec succés");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Form1 form1 = new Form1();
form1.LoadData();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
解决方案
如果要检查用户是否存在,可以使用
if(reader.HasRows)
user exists
else
user doesn't exist
希望这可以帮助
推荐阅读
- python - 连接 DataFrames,其中 DataFrame1 包含 DataFrame2 的缺失值(特定于列)。DataFrame1 没有 NaN 值
- ios - Swift XCode 中循环的时间延迟
- angular - 如何在角度中减少 mat-form-field-infix 的填充
- php - 如何使用 Laravel Map 函数操作数据对象和数组?
- python - 在 Python 中重用另一个文件中已经创建的对象
- c# - 每次我击键时都会发生 IntegerUpDown ValueChangeEvent
- azureservicebus - Azure func 无法同时监听 2 个订阅
- c# - 在选项标签中显示数据库中的项目名称
- sapui5 - SAP Fiori Elements 中的副作用实施
- ios - SwiftUI:iOS 15 中出现故障的 NavigationBar 和 TabBar