2016-10-19 11 views
0

以下はフォームのイメージです。値を挿入してデータベースから読み込みたいが、コンボボックスの値は挿入されません。私を助けてください... 私のコードで何が間違っていますか?あなたはコンボボックスのデータソースに設定されているオブジェクトのどのようなComboBoxの値がSQL Serverデータベースに保存されていません

private void btnSave_Click(object sender, EventArgs e) 
    { 
     if (string.IsNullOrEmpty(tbPermissionID.Text) == true) 
     { 
      string CS = ConfigurationManager.ConnectionStrings["UMSdbConnectionString"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(CS)) 
      { 
       using (SqlCommand cmd = new SqlCommand("SELECT MAX(per_id)+1 FROM Permission", con)) 
       { 
        con.Open(); 
        cmd.CommandType = CommandType.Text; 
        SqlDataReader dr = cmd.ExecuteReader(); 
        { 
         if (dr.Read()) 
         { 

          tbPermissionID.Text = dr[0].ToString(); 
          SqlParameter p1 = new SqlParameter("@per_id", tbPermissionID.Text); 
          SqlParameter p2 = new SqlParameter("@fk_group_id", cbGroupName.SelectedText.ToString()); 
          SqlParameter p3 = new SqlParameter("@fk_form_id", cbFormName.SelectedText.ToString()); 
          SqlParameter p4 = new SqlParameter("@per_save", cbSave.Items[cbSave.SelectedIndex].ToString()); 
          SqlParameter p5 = new SqlParameter("@per_update", cbUpdate.SelectedText.ToString()); 
          SqlParameter p6 = new SqlParameter("@per_select", cbSelect.SelectedText.ToString()); 
          SqlParameter p7 = new SqlParameter("@per_delete", cbDelete.SelectedText.ToString()); 
          SqlParameter p8 = new SqlParameter("@per_flag", cbFlag.SelectedText.ToString()); 
          SqlCommand cmd1 = new SqlCommand("insert into Permission (per_id,fk_group_id,fk_form_id,per_save,per_update,per_select,per_delete,per_flag) VALUES ('" + p1.Value + "','" + p2.Value + "','" + p3.Value + "','" + p5.Value + "','" + p5.Value + "','" + p6.Value + "','" + p7.Value + "','" + p8.Value + "')", con); 
          cmd1.ExecuteNonQuery(); 
          MessageBox.Show("Record Saved"); 
          LoadPermissionDetails(); 

         } 
        } 
       } 
      } 
     } 
    } 

Here is the picture

+1

これはパラメータの使い方ではありません。 – LarsTech

+0

これらのパラメータは、テキストボックスの値では正常に動作しますが、コンボボックスでは正しく動作しません。 –

+0

いいえ。Commandオブジェクトにパラメータを追加します。今すぐ、あなたのクエリはSQLインジェクションとフォーマットの問題に公開されています。そのクエリを修正して、 'VALUES(@per_id、@fk_group_id ... 'など。 – LarsTech

答えて

0

?それは単純な文字列の配列である場合は、代わりにComboBox.SelectedTextのこれを試してみてください。

ComboBox.SelectedItem.ToString() 

あなたのDataSourceがストリングの配列ではない場合、あなたはタイプを対象とし、そのあなたの財産を取得し、あなたにのSelectedItemの値をキャストする必要がありますデータベースに挿入する必要があります。例えば。あなたはコンボボックスに企業のリストを割り当てられ、会社のオブジェクトは、「名前」と呼ばれるプロパティ名を持っている場合、あなたはこのような何かをする必要があります

((Company)ComboBox.SelectedItem).Name 

は何もとNullReferenceExceptionを回避するように選択されていないかどうかを確認することを忘れないでください。

+0

私は2つのアイテム" Y "と" N "があるコンボボックスを持っています。パラメータを介してデータベースにcombox値を追加したいと思います...私はcbSave.SelectedItems.ToString(); cbSave.SelectedTextToString(); cbSave.SelectedValue.ToString();あなたはNameプロパティを挙げました。私はそれを取得しませんでした。 –

+0

サンプルとして名前を挙げました。これが練習であれば、問題の内容を確認できるようにコードを投稿できますか? – Saeid

+0

Offcourseあなたが私にあなたの電子メールを提供すれば、それは本当に感謝されるでしょう –

関連する問題