2011-08-11 6 views
1

user_idとquiz_izをテーブルの列に挿入する必要があります。選択した複数の値を1つのコントロールからテーブルの列に挿入するためのコードがありますが、 Submitを押すと、両方のコントロールに表示されている値から2つのフィールドに挿入します。2つのリストボックスコントロールからテーブルに挿入する

私は、MySQLへのODBC接続を使用しています、私は挿入する必要があり、テーブルが配置されているが、thatsのだった....

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

paramterized sqlの使用について考える必要があります。あなたが今やっているのは、誰でもSQLインジェクションを実行して実行できるオープンストリングをサーバーに送信することです。ストアドプロシージャを使用するか、またはパラメータ化されたクエリを使用することを考えてください。 – gh9

+0

あなたが何をしようとしているのか分かりません。あなたはsc * sc2(各可能な組み合わせ)の各値のレコードを挿入しようとしていますか? –

答えて

2

あなたは多分、ネストされたのforeachを使用する必要があります。

foreach (string item in sc) 
{ 
    foreach (string item in sc2) 
    { 
    insert sc and sc2 
    } 
} 
関連する問題