MySql多對多表進行管理操作

在實際的項目開發中,表的多對多的關係很常見,這就難免要對其進行增刪查改操作,在這裏介紹一種方法如何對這種關係進行處理(WinFrom下的,但主要的是Sql的操作)。
首先介紹數據庫,數據庫中有三張表,一張業務類型表,主要類有id,名稱;一張車輛信息表,主要字段車輛編號,車牌號碼;還有一張自然是兩張表的關聯表,car_bustype表主要字段car_no(車輛id),bus_type_no(業務類型id)。這三張表是多對多的最常見的表現形式,但是對於這三張表的維護就有多種方法了,業務類型表作爲基礎表,維護只是簡單的對業務類型增刪查改的操作;車輛信息表則是關鍵,在添加車輛信息時,必須選擇它所擁有的業務類型,在這裏主要講述的就是對車輛信息的維護。
車輛信息的維護:
(1)說到維護,自然需要界面,在這裏更主要的是增改的界面,也就是車輛信息詳情界面,在這裏我使用的是左側一些車輛的基本信息(一些基本標籤)+右側業務類型DataGridView(第一行爲複選框,第二行顯示業務類型名稱,隱藏業務類型id).
(2)增加車輛信息:綁定數據業務類型DataGridView是查詢全部的業務類;點擊保存時,自然是先插入主表也就是車輛信息表,然後的話就是得到車輛編號,然後遍歷DataGridView選中的數據,在這裏附上詳細代碼:

string sql = SQLstatement.車輛信息_insert(id,textBox車牌號碼.Text.Trim());//車輛信息_insert爲插入的sql語句,id爲車輛編號,這裏是我們系統根據指定方式生成的
foreach (DataGridViewRow row in dataGridView業務類型.Rows) { //保存選擇的類型
  if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().Equals("true")) {
     sql += string.Format("insert into car_bustype(car_no,bus_type_no) values('{0}','{1}');",id,row.Cells["業務類型id"].Value);//插入
     }
 }
    MySQLConnector.ExecuteSQLinMySQL(sql);

(3)修改車輛信息:利用這種方式實現增刪查改的話,最難處理的也就是這個問題吧,修改的時候如何綁定所有的業務類型呢?而且還得把擁有的業務類型的複選框賦值爲選中?在這裏一段Sql代碼即可解決.

DataTable dt = MyConnector.getDataSet(string.Format("select 類型2.id as 業務類型id,類型2.名稱 as 業務類型,if(table2.car_no is null,'false','true') as 選擇 from 業務類型 as 類型2 
left join (select id,名稱,car_no from car_bustype inner join 業務類型 as 類型1 on 類型1.id=car_bustype.bus_type_no where car_no = '{0}') as table2 on table2.`id` = 類型2.id"),_carNo); //_caroNo爲車輛信息列表傳遞而來的

以上代碼即可直接綁定修改時DataGridView的數據。修改時保存我則使用的是先刪除改車輛的所有數據,然後再重新插入,代碼如下:

string sql = SQLstatement.救援車輛信息_update(textBox車輛編號.Text.Trim(), textBox車牌號碼.Text.Trim());
sql += string.Format("delete from car_bustype where car_no='{0}';",textBox車輛編號.Text.Trim());
foreach (DataGridViewRow row in dataGridView業務類型.Rows)
{ //保存選擇的類型
      if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().Equals("true")){
            sql += string.Format("insert into car_bustype(car_no,bus_type_no) values('{0}','{1}');", textBox車輛編號.Text.Trim(), row.Cells["業務類型id"].Value);
          }
}
MySQLConnector.ExecuteSQLinMySQL(sql);

注:在這裏我設置了DataGridViwe trueValue:true,falseValue:false故修改增加插入數據時,可.Equals(‘true’);
總結:在這裏主要是記錄一下如何綁定修改時的多對多表的數據,業務類型的數據綁定,這種方式主要就是改數據綁定時,需要進行一系列的數據處理,那句Sql即可解決全部的問題,不同的表時,只需替換指定的字段即可.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章