MySql數(shù)據(jù)庫中存在大量的表結(jié)構(gòu),而且這些表都存在一個共同點(diǎn),就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字
MySql數(shù)據(jù)庫中存在大量的表結(jié)構(gòu),而且這些表都存在一個共同點(diǎn),就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字段id,name,city,adress不允許為空,所以表中這幾個字段的數(shù)據(jù)都是已經(jīng)賦給實(shí)值的,而lat與lng(經(jīng)緯度)是為空的?,F(xiàn)在要寫一個程序,根據(jù)city,adress請求獲取數(shù)據(jù),把循環(huán)每一表中根據(jù)city,adress請求獲取的數(shù)據(jù)更新到相應(yīng)表,相應(yīng)表中對應(yīng)的那一行數(shù)據(jù)。這句話,可能你有點(diǎn)暈,說白了就是,先循環(huán)查詢遍歷表中city與adress的值,根據(jù)city,adress的值請求獲取數(shù)據(jù),更新到相應(yīng)行中,這個表循環(huán)更新完了就跳到下個表中再循環(huán)更新,以此類推,直到全部更新。。
這是我們做的一個程序,當(dāng)時我還天真的以為手動輸入city和adress請求獲取更新,誰不曾料想數(shù)據(jù)庫表中的數(shù)據(jù)有好幾萬條,要是手動累死你吧,呵呵。。所以這個程序思想也是從我們同事那獲取到的,很有用,我也是在不斷學(xué)習(xí)當(dāng)中,發(fā)表出來供大家參考,,資源共享才能更好的進(jìn)步?。?!
MySql數(shù)據(jù)庫的連接字符串是:
string MySqlString = "Host=ip地址;Port=端口號;User id=用戶名;pwd=密碼;Database=數(shù)據(jù)庫名;Character Set=utf8"
第一步,
連接數(shù)據(jù)庫,寫個根據(jù)city,adress請求獲取數(shù)據(jù)的查詢方法,傳個參數(shù)(數(shù)據(jù)庫的表名),如Get_Data(string tablename)
查詢語句:string MySqlSelect = "select id,city,address,lat,lng from " + tablename;然后調(diào)用ExecuteReader()方法將值傳出去,注意:表中這幾個字段應(yīng)該先建立一個model類(這里不細(xì)說,大家都懂,就是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();
}
第二步,
那就是更新方法了,從查詢到的數(shù)據(jù),循環(huán)遍歷表名更新。更新方法中有四個參數(shù),根據(jù)city,adress查詢出來的id,數(shù)據(jù)庫的表名,以及要更新的字段lat,lng。如Update_Data(string id, string dataTable, decimal lat, decimal lng)
更新語句:string MySqlUpdata = "update " + dataTable + " set latitude=" + lat + ",longitude=" + lng + " whereA";
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循環(huán),實(shí)例化上面讓寫的那個Model類,調(diào)用第一步里面的查詢方法,將取得的實(shí)體值存在List
?
for (i = 0; i < tableName.Length; i++)
{
List
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] + "此表已更新完畢?。?!");
到此,這篇文章算是寫完了,我不知道正在閱讀的您會不會看的不太明白,我也不知道自己表述的如何,只知道自己能理解,呵呵。。
反正這也是資源共享,給需要的您提供一點(diǎn)思路即可。
一家之言,僅供參考?。?!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。