2013-07-31 13 views
0

DataGridview에서 선택된 행을 삭제하고 MySQL에서 행을 삭제하고 싶습니다.DataGridview에서 선택된 행을 삭제하고 데이터베이스에서 행을 삭제하십시오.

private void deleteOrderButton_Click(object sender, EventArgs e) 
{ 
    int selectedIndex = orderDataGridView.CurrentCell.RowIndex; 

    if (selectedIndex > -1) 
    { 
     orderDataGridView.Rows.RemoveAt(selectedIndex); 
     orderDataGridView.Refresh(); 
    } 

    string constring = "datasource=localhost;port=3306;username=admin;password=acw123"; 
    string Query = "delete from database.tem_order where temp_orderID = ???? 
    MySqlConnection conDatabase = new MySqlConnection(constring); 
    MySqlCommand cmdDataBase = new MySqlCommand(Query, conDatabase); 
    MySqlDataReader myReader; 

    conDatabase.Open(); 
    myReader = cmdDataBase.ExecuteReader(); 
    MessageBox.Show("Updated"); 

거기에 My SQL 명령이 있습니다. 누군가 도움이 되셨습니까?

+1

그리드의 데이터 소스는 어떻게 설정됩니까? –

+0

데이터 소스가 동일한 테이블에서 나왔습니다. 다시 표시하고 DataGrid에서 선택한 항목을 삭제하고 데이터베이스에서 삭제하려고합니다. – user2601433

답변

1

DataGridView에서 데이터 소스를 사용하면 선택한 행의 개체를 검색 할 수 있습니다.

DataRow row = (dataGridView.SelectedRows[0].DataBoundItem as DataRowView).Row; 

DataRow '행'에는 MySQL에서 레코드를 삭제할 수있는 ID가 있어야합니다. 실제 열 이름 난 그게

dataGridView1.Rows.RemoveAt (item.Index)을 도울 수있는 희망

using(MySqlConnection sqlConn = new MySqlConnection("datasource=localhost;port=3306;username=admin;password=acw123")) 
{ 
    sqlConn.Open(); 

    using(MySqlCommand sqlCommand = new MySqlCommand("DELETE FROM tem_order WHERE temp_orderID = " + row["ID-column-name"],sqlConn)) 
    { 
     sqlCommand.ExecuteNonQuery(); 
    } 
} 
+0

행을 삭제하는 방법은 어떨까요? – user2601433

+0

anwser를 다시 살펴보고 삭제 쿼리의 샘플을 추가했습니다. –

+0

오류가 발생했습니다. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : index – user2601433

0

에 "ID-열 이름을"대체 ; 당신은 그 두 가지 작업은 내 충고

+0

RemoveAt는 MySQL 삭제를 수행하는 데 필요한 ID를 돌려주지 않습니다. –

+0

나는 어떤 쿼리를 입력했는지 물어보고 싶습니다. Query = "database.tem_order에서 삭제합니다. temp_orderID = ???? – user2601433

+0

do 루프를 사용하여 선택된 행을 가져오고 int ordRID = YourDatagrid.Rows [i]처럼 지정하십시오. 셀 [c]. 값 및 쿼리 = "database.tem_order에서 삭제합니다. 여기서 temp_orderID = ordrID –

0

당신이 선택한 셀에서 OrderID를 얻을 수 있도록 트랜잭션 범위를 사용해야 그런데

.

 int selectedIndex = orderDataGridView.CurrentCell.RowIndex; 
     String selectedOrderID = ""; 
     if (selectedIndex > -1) 
     { 

      orderDataGridView.Rows.RemoveAt(selectedIndex); 
      //Replace "OrderID" with the column name of the Order's ID 
      selectedOrderID = orderDataGridView.Rows[selectedIndex].Cells["OrderID"].Value.ToString(); 

     } 

귀하의 질의는 다음과 같이 될 것입니다 :

다음
 string Query = "delete from database.tem_order where temp_orderID = " + selectedOrderID ; 
     //This is only an example, you should set the params to avoid SQL Injection 

그냥 삭제하고있는 gridview를 새로 고침이 수행 :

 conDatabase.Open(); 
     myReader = cmdDataBase.ExecuteReader(); 
     orderDataGridView.Refresh(); 
+0

문자열 selectedOrderID = 0; 암시 적으로 'int'유형을 'string'으로 변환 할 수 없습니다. – user2601433

+0

죄송합니다, 저, 잘못되었습니다 : String selectedOrderID = ""; –

0
DialogResult dr = XtraMessageBox.Show(Global.lk, "Are you sure to Delete this record ?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Information); 

      if (dr.ToString() == "Yes") 
      { 
       int[] selectedRows = gridViewDeduction.GetSelectedRows(); 
       string type_id = gridViewDeduction.GetRowCellValue(selectedRows[0], gridViewDeduction.Columns["TypeId"]).ToString(); 


       if (type_id != "") 
       { 
        string xsql = "DELETE FROM Pay_DeductionTypeMaster WHERE TypeId = " + type_id + " AND CompanyID = " + Global.CompanyID + ""; 
        bool del = Database.ExecuteSQL(xsql); 
        if (!del) 
        { 
         XtraMessageBox.Show(Global.lk, "Unable to delete record.This deduction details is in use.", "Deduction Type");       
         return; 
        } 
        dt.Rows.RemoveAt(gridViewDeduction.FocusedRowHandle); 
       } 
       else 
        dt.Rows.RemoveAt(gridViewDeduction.FocusedRowHandle); 
       dt.AcceptChanges(); 
       gridViewDeduction.RefreshData(); 
0

("TABLENAME에서 삭제할 경우 ID = ('+ Grid1.Rows [Grid1.CurrentRow.Index] .Cells [ "ID"]. 값 + "');"); // 선택된 셀의 값을 얻습니다.

+1

올바르게 형식을 지정하고 설명을 추가하십시오. – Sid

관련 문제