mysql迴圈遍歷獲取 MySql多表迴圈遍歷更新

2021-10-25 14:28:58 字數 2817 閱讀 6554

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

mysql資料庫中存在大量的表結構,而且這些表都存在乙個共同點,就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字段id,name,city,adress不允許為空,所以表中這幾個欄位的資料都是已經賦給實值的,而lat與lng(經緯度)是為空的。現在要寫乙個程式,根據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泛型集合當中。再foreach遍歷list泛型集合,取得變數引數的值(lat/lng),呼叫更新方法,迴圈更新,就行了。。。**示例如下:

for (i = 0; i < tablename.length; i++)

list datasource = new list();

int h = 0;

datasource = get_data(tablename[i]);

foreach (datamodel dm in datasource)

tryupdate_data(dm.id, tablename[i], dm.latitude, dm.longitude);

console.writeline("第" + h + "條記錄以更新");

h++;

catch (exception ex)

continue;

console.writeline(tablename[i] + "此表已更新完畢!!!");

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

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

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

mysql迴圈遍歷獲取 MySQL 全表遍歷

今天做乙個業務需求的邏輯處理,需要對mysql全表進行遍歷,資料規模百萬級別,為方便描述,這張表就用 a 來代替吧 結合自己的思路和一些資料,在這裡記錄一下方案的進化史 一 直接遍歷拿出所有的資料 select from a 這個肯定不用多說了,估計還沒拿完,記憶體就爆了,對這種數量級的表不現實 二...

迴圈遍歷獲取table中的td,tr

貼上頁面div電鰻 貝殼魚 炸彈 煙霧彈 雙倍卡 減速標放大鏡 遍歷table js 通過行列獲取 var tb document.getelementbyid tab table 的 id var rows tb.rows 獲取 所有行 for var i 0 ijs通過table標籤獲取 btn...

mysql游標遍歷迴圈 插入資料

begin declare no more record int default 0 declare insertcolumn varchar 18 declare cur record cursor for select insertparam from testtable declare con...