2017-07-04 4 views
0

シングルボタンをクリックしてC#WinFormsのデータの挿入と更新を行う方法がわかりません。シングルボタンでの挿入、更新winformsをクリックする

private void save_Click(object sender, EventArgs e) 
    { 
     SqlConnection cn = new SqlConnection(); 
     cn.ConnectionString = "data source=Sai;database=kaur; user id=sa;password=azxc;"; 


     cn.Open(); 

     string gen; 
     if (radioButton1.Checked == true) 
      gen = "Male"; 
     else 
      gen = "Female"; 
     string clas = null; 
     clas = comboBox1.Text; 

     string section = null; 
     section = comboBox2.Text; 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "insert into studetail values('" + textBox1.Text + "','" + textBox2.Text + "','" + gen + "','" + textBox3.Text + "','" + clas + "','" + section + "')"; 

     cmd.Connection = cn; 

     int n = cmd.ExecuteNonQuery(); 
     if (n > 0) 
      MessageBox.Show(n + " Row Inserted."); 
     else 
      MessageBox.Show("Insertion failed."); 

     SqlDataAdapter da = new SqlDataAdapter("select * from studetail ", cn); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     dataGridView1.DataSource = dt; 
+0

を持って行うことができます各列? – KernelMode

答えて

0

あなたは挿入する前に削除を追加することができます。

 private void save_Click(object sender, EventArgs e) 
     { 
      DeletePerson(id); // add this 
      SqlConnection cn = new SqlConnection(); 

      ... 
     } 


     public void DeletePerson(int id) 
     { 
      using(SqlConnection connection = new SqlConnection(credentials)) 
      { 
       connection.Open(); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.Connection = connection; 
       cmd.CommandText = "delete from studetail where someUniqeIdColumn = " + id;   
       cmd.ExecuteNonQuery(); 
      } 
     } 
0

最初にSQLクエリをオフにするのは間違いです。

列名を使用して、データを挿入したい列であり、値はあなたが言った列に挿入するデータです
INSERT INTO studetail (columnName1, columnName2, ...columnNameN) 
VALUES (value1, value2, ...valueN); 

:それは、次のようになるはずです。

また、usingステートメント内で接続をラップすることで接続を破棄する必要があります。

using(var con = new SqlConnection(connectionString)) 
{ 
con.Open(); 
//rest of code that needs a connection here 
} 

さらに、SQLインジェクションに注意する必要があります。私は、MSDNのWebサイトからreading thisサンプルを強く提案しています。これは、SQL Updateを使用し、SqlCommand.Paramatersプロパティを使用してSQLインジェクションを回避する例を示します。

データベーステーブルにもプライマリキーがある必要があります。テーブル内の各レコードを一意に識別できるようにする必要があります。

同じボタンで更新と保存を行うには、編集中のデータの行がすでに存在するかどうかを確認する必要があります。これはプライマリが便利になるときです。あなたは、レコードがすでに

SELECT 1 FROM studetail WHERE <Condition> 

WHERE条件があなたのテーブルにあなたが一意に識別する方法(主キー)の行になりますが存在するかどうかを確認するために、データベースをチェックしたくなるでしょう。テーブル内の行を一意に識別されている場合は、値が存在する場合は、上記のSQL文は、レコードが存在しない場合のことができます。UPDATEまたは0を意味し、1を返しますので、あなたは、あなたは内の任意の(ユニークな)IDをINSERT

関連する問題