2011-08-11 2 views
1

J'ai besoin d'insérer user_id et quiz_iz dans une colonne de table, j'ai le code ci-dessous qui fonctionne pour insérer plusieurs valeurs sélectionnées d'un contrôle dans une colonne de table, mais je ne peux pas comprendre comment insérer dans 2 champs à partir des valeurs répertoriées sur les deux contrôles lorsque vous cliquez sur Envoyer.Insérer dans la table à partir de deux contrôles

J'utilise la connexion à mysql odbc, thats étaient la table que j'ai besoin d'insérer est situé ....

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; 
using System.Collections.Specialized; 
using System.Text; 
using System.Data; 
using System.Data.Odbc; 

public partial class _Default : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private void InsertRecords(StringCollection sc, StringCollection sc2) 
    { 
     string ConnectionString = @"driver={MySQL ODBC 5.1 Driver};server=localhost;database=db_mydb;uid=;pwd=;"; 
     OdbcConnection conn = new OdbcConnection(ConnectionString); 
     StringBuilder sb = new StringBuilder(string.Empty); 
     StringBuilder sb2 = new StringBuilder(string.Empty); 

     foreach (string item in sc) 
     { 

      const string sqlStatement = "INSERT INTO jos_jquarks_users_quizzes (quiz_id,user_id) VALUES"; 

      sb.AppendFormat("{0}('{1}'); ", sqlStatement, item); 
      sb2.AppendFormat("{0}('{1}'); ", sqlStatement, item); 

     } 

     try 
     { 

      conn.Open(); 

      OdbcCommand cmd = new OdbcCommand(sb.ToString(), conn); 
      cmd.CommandType = CommandType.Text; 
      cmd.ExecuteNonQuery(); 
      Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Records Successfuly Saved!');", true); 

     } 

     catch (System.Data.SqlClient.SqlException ex) 
     { 

      string msg = "Insert Error:"; 
      msg += ex.Message; 
      throw new Exception(msg); 

     } 

     finally 
     { 

      conn.Close(); 

     } 

    } 


    protected void Button1_Click(object sender, EventArgs e) 
    { 

     StringCollection sc = new StringCollection(); 
     StringCollection sc2 = new StringCollection(); 


     foreach (ListItem item in ListBox1.Items) 
     { 

      if (item.Selected) 
      { 

       sc.Add(item.Text); 

      } 

     } 

     foreach (ListItem item in ListBox2.Items) 
     { 

      if (item.Selected) 
      { 

       sc2.Add(item.Text); 

      } 

     } 
       InsertRecords(sc , sc2); 


    } 
} 
+0

Vous devriez penser à utiliser SQL paramétré. Qu'est-ce que vous faites maintenant est d'envoyer une chaîne ouverte au serveur que tout le monde peut échapper et exécuter une injection SQL. Pensez à utiliser un proc stocké ou juste une requête paramétrée. – gh9

+0

Vous ne savez pas si je suis clair sur ce que vous essayez de faire. Essayez-vous d'insérer un enregistrement pour chaque valeur dans sc * sc2 (chaque combinaison possible)? –

Répondre

2

Vous devez utiliser foreach imbriquée peut-être.

foreach (string item in sc) 
{ 
    foreach (string item in sc2) 
    { 
    insert sc and sc2 
    } 
} 
Questions connexes