MySql多表迴圈遍曆更新

來源:互聯網
上載者:User

先給大家解釋解釋發表這篇博文的主要思想是:

    MySql資料庫中存在大量的表結構,而且這些表都存在一個共同點,就是表中都有相同欄位,比如id,name,city,adress,lat,lng。表中欄位id,name,city,adress不允許為空白,所以表中這幾個欄位的資料都是已經賦給實值的,而lat與lng(經緯度)是為空白的。現在要寫一個程式,根據city,adress請求擷取資料,把迴圈每一表中根據city,adress請求擷取的資料更新到相應表,相應表中對應的那一行資料。這句話,可能你有點暈,說白了就是,先迴圈查詢遍曆表中city與adress的值,根據city,adress的值請求擷取資料,更新到相應行中,這個表迴圈更新完了就跳到下個表中再迴圈更新,以此類推,直到全部更新。。。

   這是我們做的一個程式,當時我還天真的以為手動輸入city和adress請求擷取更新,誰不曾料想資料庫表中的資料有好幾萬條,要是手動累死你吧,呵呵。。。所以這個程式思想也是從我們同事那擷取到的,很有用,我也是在不斷學習當中,發表出來供大家參考,資源共用才能更好的進步!!!

MySql資料庫的連接字串是:

   string MySqlString = "Host=ip地址;Port=連接埠號碼;User id=使用者名稱;pwd=密碼;Database=資料庫名;Character Set=utf8"

第一步,

串連資料庫,寫個根據city,adress請求擷取資料的查詢方法,傳個參數(資料庫的表名),如Get_Data(string tablename)

   查詢語句:string MySqlSelect = "select id,city,address,lat,lng from " + tablename;然後調用ExecuteReader()方法將值傳出去,注意:表中這幾個欄位應該先建立一個model類(這裡不細說,大家都懂,就是get{}set{}),方便傳值

              using (MySqlDataReader dataReader = Command.ExecuteReader())                {                    while (dataReader.Read())                    {                        DataModel dataModel = new DataModel();                        dataModel.Id = dataReader["id"].ToString();                        dataModel.City = (string)dataReader["city"];                        dataModel.Address = (string)dataReader["address"];                        if (dataReader["latitude"] != DBNull.Value)                        {                            dataModel.Latitude = (decimal)dataReader["latitude"];                        }                        else                            dataModel.Latitude = 0.0M;                        if (dataReader["longitude"] != DBNull.Value)                        {                            dataModel.Latitude = (decimal)dataReader["longitude"];                        }                        else                            dataModel.Latitude = 0.0M;                        dataSource.Add(dataModel);                    }                    dataReader.Close();                    dataReader.Dispose();                }

第二步,

那就是更新方法了,從查詢到的資料,迴圈遍曆表名更新。更新方法中有四個參數,根據city,adress查詢出來的id,資料庫的表名,以及要更新的欄位lat,lng。如Update_Data(string id, string dataTable, decimal lat, decimal lng)

   更新語句:string MySqlUpdata = "update " + dataTable + " set latitude=" + lat + ",longitude=" + lng + " where id=" + id;然後執行ExecuteNonQuery()方法,返回受影響的行數。

第三步,

在Main()方法中調用,先將表名存在一個數組裡面,形如:

            string[] tableName = new string[10];            tableName[0] = "A";            tableName[1] = "B";            tableName[2] = "C";            tableName[3] = "D";            tableName[4] = "E";            tableName[5] = "F";            tableName[6] = "G";            tableName[7] = "H";            tableName[8] = "I";            tableName[9] = "J";           

而後,把表名寫個for迴圈,執行個體化上面讓寫的那個Model類,調用第一步裡面的查詢方法,將取得的實體值存在List<Model>泛型集合當中。再foreach遍曆List<Model>泛型集合,取得變數參數的值(lat/lng),調用更新方法,迴圈更新,就行了。。。程式碼範例如下:

           for (i = 0; i < tableName.Length; i++)            {                List<Model> DataSource = new List<Model>();                int h = 0;                DataSource = Get_Data(tableName[i]);                foreach (DataModel dm in DataSource)                {                                       try                    {                            Update_Data(dm.Id, tableName[i], dm.Latitude, dm.Longitude);                            Console.WriteLine("第" + h + "條記錄以更新");                            h++;                                            }                    catch (Exception ex)                    {                        continue;                    }                }                Console.WriteLine(tableName[i] + "此表已更新完畢!!!");

到此,這篇部落格算是寫完了,我不知道正在閱讀的您會不會看的不太明白,我也不知道自己表述的如何,只知道自己能理解,呵呵。。。。

反正這也是資源共用,給需要的您提供一點思路即可。

一家之言,僅供參考!!!  

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.