2012-10-17 3 views
0

J'ai créé 2 tables dans une base de données, chaque table a un champ de CompanyID qui est en relation avec eachotherrécupérer un champ de sql par connexion

Dans ma page d'inscription de l'entreprise doit enregistrer les informations suivantes:

  1. CompanyID
  2. Nom de l'entreprise
  3. type d'entreprise
  4. personne
  5. Téléphone
  6. Adresse
  7. e-mail
  8. Mot de passe

L'entreprise se connecte alors à utiliser leur nom de la compagnie et mot de passe, une fois connecté dans une entreprise peut afficher un emploi et le problème que j'ai est dans mon jobtable il y a aussi un champ appelé CompanyID

Comment puis-je récupérer le CompanyID des Companys déjà enregistrés stockés dans ma table de l'entreprise et l'utiliser

 SqlParameter p6 = new SqlParameter("CompanyID", 'here'); 

mon code complet:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 
    SqlConnection con = new SqlConnection(strcon); 

    SqlCommand com = new SqlCommand("Store-Jobs", con); 
    com.CommandType = CommandType.StoredProcedure; 
    SqlParameter p1 = new SqlParameter("Job", TextBox1.Text); 
    SqlParameter p2 = new SqlParameter("JobType", DropDownList1.Text); 
    SqlParameter p3 = new SqlParameter("StartDate", TextBox3.Text); 
    SqlParameter p4 = new SqlParameter("Time", TextBox2.Text); 
    SqlParameter p5 = new SqlParameter("JobID", TextBox1.Text.Substring(3).ToUpper()); 
    SqlParameter p6 = new SqlParameter("CompanyID",); 
    SqlParameter p7 = new SqlParameter("PositionFilled", "NO"); 
    SqlParameter p8 = new SqlParameter("Description", TextBox4.Text); 
    com.Parameters.Add(p1); 
    com.Parameters.Add(p2); 
    com.Parameters.Add(p3); 
    com.Parameters.Add(p4); 
    com.Parameters.Add(p5); 
    com.Parameters.Add(p6); 
    com.Parameters.Add(p7); 
    com.Parameters.Add(p8); 
    con.Open(); 
    com.ExecuteNonQuery(); 
    Labelinfo.Text = "Post successful."; 
} 
+0

Quelque part, vous devez avoir des informations sur la session de l'entreprise connectée. Vous pouvez interroger la table de l'entreprise pour l'identifiant de l'entreprise en utilisant le nom de l'entreprise. – sgud

Répondre

2

Il y a plusieurs façons de le faire. Étant donné que l'utilisateur se connecte à une société spécifique, je suppose que CompanyId serait le même pendant toute la session. Par conséquent, je recommande de récupérer le CompanyId pendant le processus de connexion et de le stocker dans la variable de session. Ensuite, vous obtenez le CompanyId de cette variable de session quand vous le souhaitez. Une alternative serait de passer le nom de la société dans la procédure stockée et de laisser la procédure stockée obtenir CompanyId en utilisant la valeur Nom de la société. Sur une note secondaire ... J'aime montrer les bonnes pratiques quand je vois du code qui pourrait avoir des problèmes. Votre code fonctionnera correctement si tout réussit mais si des exceptions se produisent, vous laisserez les connexions SQL ouvertes. J'ai pris la liberté de factoriser votre code pour montrer une alternative ...

string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 

// Use "using" statement to guarantee connection is closed even if exception occurs 
using (SqlConnection con = new SqlConnection(strcon)) 
{ 
    con.Open(); 
    using (SqlCommand com = con.CreateCommand("Store-Jobs")) 
    { 
     com.CommandType = CommandType.StoredProcedure; 
     com.Parameters.AddWithValue("Job", TextBox1.Text); 
     com.Parameters.AddWithValue("JobType", DropDownList1.Text); 
     com.Parameters.AddWithValue("StartDate", TextBox3.Text); 
     com.Parameters.AddWithValue("Time", TextBox2.Text); 
     com.Parameters.AddWithValue("JobID", TextBox1.Text.Substring(3).ToUpper()); 
     com.Parameters.AddWithValue("CompanyID",); 
     com.Parameters.AddWithValue("PositionFilled", "NO"); 
     com.Parameters.AddWithValue("Description", TextBox4.Text); 
     com.ExecuteNonQuery(); 
    } 
} 
Labelinfo.Text = "Post successful."; 
0

Vous avez deux options:

  1. Vous pouvez utiliser le nom de l'entreprise pour récupérer l'ID de l'entreprise de la Table de la société, en utilisant une procédure stockée différente, puis appelez la procédure Store-Job comme vous le faites dans votre code.

  2. Vous pouvez modifier Store-Job prendre le nom de l'entreprise plutôt que l'ID de l'entreprise, et, dans cette procédure, rechercher l'identifiant de l'entreprise par nom d'entreprise, puis l'utiliser pour effectuer une insertion sur Teh tableau d'emploi. Comme vous avez une certaine forme de vérification en cours de connexion, cela pourrait être le bon moment pour récupérer l'identifiant de l'entreprise et le stocker en session (comme le suggère Gene S ci-dessus). Vous pouvez ensuite le récupérer et l'utiliser dans votre procédure stockée.

Puisque vous aurez probablement besoin de l'utiliser dans de nombreux endroits dans votre application, afin d'assurer que les données enregistrées ou récupérées appartient à la bonne compagnie, l'option 3 sonne comme le meilleur.

Questions connexes