Comment insert des données dans une database relationnelle

J'ai trois tables Microsoft SQL Server qui sont constituées de:

  • Table des clients

  • Table de formation

Les 3 tables sont liées.

J'ai besoin d'insert des données dans le tableau de Training que je peux faire.

Le problème est l'insertion de la colonne CustomerID de la table clients dans la table de formation en connaissant uniquement le nom du client.

J'ai créé une class séparée car je l'utiliserai beaucoup dans mes applications.

  public void UpdateDatabase(ssortingng sql_query) { using (SqlConnection conn = new SqlConnection(connection_ssortingng)) { using (SqlCommand comm = new SqlCommand(sql_query, conn)) { conn.Open(); comm.ExecuteNonQuery(); conn.Close(); } } } 

C'est ma class principale qui est utilisée pour mettre à jour ma database.

Dans mon button cliquez même j'ai le code suivant.

  private void btnSave_Click(object sender, EventArgs e) { DB NewJob = new DB(); if (TabControl1.SelectedTab == TabControl1.TabPages["TPTraining"])//If TPTraiing Tab is selected { try { ssortingng Customer = TPTcboCustomer.Text; ssortingng Product = TPTcboProduct.Text; DateTime DemoDate = TPTdtpDate.Value.Date; ssortingng EndResult = TPTtxtEndResult.Text; NewJob.UpdateDatabase("INSERT INTO TrainingDemos(CustomerID, ProductID, DemoDate, EndResult)VALUES('" + Customer + "','" + Product + "','" + DemoDate + "','" + EndResult + "')"); MessageBox.Show("Training/Demo Saved Sussesfully"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } 

La variable Customer contient le nom du client que je reçois de la table Customer. Au lieu d'insert le nom du client dans la table de formation, je dois insert le code client.

 ssortingng Customer = TPTcboCustomer.Text; 

Lorsque le formulaire est chargé, le contrôle de list déroulante TPTcboCustomer récupère tous les noms de clients de la table client.

Bref, comment insert le CustomerID dans le tableau de formation en connaissant seulement le nom du client.

Vous devrez faire une autre requête pour get le code client. Une fois que vous avez cela, vous pouvez faire votre insertion.

Je veux dire, vous devez vérifier que c'est un vrai client de toute façon, n'est-ce pas?

Je préfère généralement remplir une list déroulante (ou un champ similaire) avec les clients à choisir de toute façon quand il y a un nombre fini d'éléments à choisir. Personnellement, je ferais une requête initiale tirant sur tous les clients et remplir le drop down menu avec ces objects clients. Ensuite, vous utilisez simplement les informations sur l'object de l'élément sélectionné pour faire votre insertion.

Rendre le Customer un type fort:

 public class Customer { public int Id { get; set; } public ssortingng Name { get; set; } // Other properties as desired public override ssortingng ToSsortingng() { return Name ?? "<No Name>"; } } 

Une fois que vous avez cela, lisez dans tous vos clients et remplir la list déroulante avec votre list d'objects Client. Le ToSsortingng() le fera afficher le nom du client dans le drop down menu. Alors vous avez juste à faire:

 Customer customer = (Customer)TPTcboCustomer.SelectedItem; 

Puis BLAM-O, vous avez toutes les informations sur les clients dont vous avez besoin pour faire votre insertion.