中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

SQLServer數據庫中的表名稱和字段實例分析-創新互聯

這篇文章主要介紹“SQL Server數據庫中的表名稱和字段實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“SQL Server數據庫中的表名稱和字段實例分析”文章能幫助大家解決問題。

創新互聯專注于企業營銷型網站建設、網站重做改版、月湖網站定制設計、自適應品牌網站建設、H5開發商城網站建設、集團公司官網建設、外貿網站制作、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為月湖等各大城市提供網站開發制作服務。

前言

項目中一般分測試環境(QAS),生產環境(PRD),當我們的項目經歷了一次周期跨度較長的更新后,當我們發布到生產環境時,首要的任務是將新增的表,字段更新到生產數據庫。很多時候,當我們發布更新的時候,已經很難記得做了哪些變更。

當然有的人會說,1.EF Code First 有history記錄,這是一種辦法,可靠么?不可靠。相信即便是用Code First,直接改數據庫的肯定不止我一個。

2.查看實體類變更記錄,這也是一個辦法。那如果用的DB First的呢?當然也可以看,就是很麻煩。

3.開發過程中,對數據庫的變更記下來。這么做過的肯定也不止我一個。

想著另外一個項目下個月要更新,改了N多的東西,到時候數據庫咋更新呢。就想著寫個工具比較兩個版本數據庫,表名稱,字段,字段類型的區別。


說干就干(本來想著用EF,DBContext應該可以實現,無奈學藝不精,最終還是回到了ADO.Net)。

控制臺應用程序,目前只能對比新增,修改(SQl Server)。

using System;using System.Collections.Generic;using System.Data.SqlClient;using System.Linq;using System.Text;using Microsoft.EntityFrameworkCore;namespace EFGetTable{ class Program {  static void Main(string[] args)  {   string prdconnectionstring = "Data Source=localhost;initial catalog=ttPRD;user id=sa;password=password;MultipleActiveResultSets=True";   var prd = GetTableNames(prdconnectionstring);   string qasconnectionstring = "Data Source=localhost;initial catalog=ttqas;user id=sa;password=password;MultipleActiveResultSets=True";   var qas = GetTableNames(qasconnectionstring);   CompareTable(prd, qas);  }  public static List<TableInfo> GetTableNames(string connectionstr)  {   var tableresult = new List<TableInfo>();   string sqlTableName = "Select * From Information_Schema.Tables";   using (SqlConnection connection = new SqlConnection(connectionstr))   {    using (SqlCommand cmd = new SqlCommand(sqlTableName, connection))    {     try     {      connection.Open();      SqlDataReader dr = cmd.ExecuteReader();//      while (dr.Read())      {       // 表名       TableInfo table = new TableInfo();       table.TableName = dr["Table_Name"].ToString();       table.columns.AddRange(GetColumnNamesByTable(dr["Table_Name"].ToString(), connection));       tableresult.Add(table);      }      connection.Close();     }     catch (System.Data.SqlClient.SqlException e)     {      Console.ForegroundColor = ConsoleColor.Red;      Console.Error.WriteLine(e.Message);      connection.Close();     }    }    return tableresult;   }  }  public static List<CloumnInfo> GetColumnNamesByTable(string tableName, SqlConnection connection)  {   var Columnresults = new List<CloumnInfo>();   string sqlcolum = $"Select * From Information_Schema.Columns t Where t.Table_Name =\'{tableName}\'";   using (SqlCommand cmd = new SqlCommand(sqlcolum, connection))   {    SqlDataReader dr = cmd.ExecuteReader();//    while (dr.Read())    {     // 表名     CloumnInfo column = new CloumnInfo();     column.CloumnName = dr["Column_name"].ToString();     column.DateType = dr["DATA_TYPE"].ToString() + dr["CHARACTER_MAXIMUM_LENGTH"].ToString();     Columnresults.Add(column);    }    return Columnresults;   }  }  public static void CompareTable(List<TableInfo> prd, List<TableInfo> qas)  {   foreach (var p in qas)   {    var tablequery = prd.AsQueryable().Where(t => t.TableName.Equals(p.TableName));    if (!tablequery.Any())    {     Console.WriteLine($"New Created Table {p.TableName}");     continue;    }    else    {     var querytable = tablequery.FirstOrDefault();     p.columns.ForEach(c =>     {      var Cloumnquery = querytable.columns.Select(cc => cc.CloumnName).Contains(c.CloumnName);      if (!Cloumnquery)      {       Console.WriteLine($"New add cloumn: {c.CloumnName} on Table {p.TableName}");      }      else      {       var querycloumn = querytable.columns.Where(qt => qt.CloumnName.Equals(c.CloumnName)).FirstOrDefault();       if (!querycloumn.DateType.Equals(c.DateType))       {        Console.WriteLine($"DateType Different: cloumn: {c.CloumnName} , {querycloumn.DateType}==>{c.DateType} on Table {p.TableName}");       }      }     });    }   }  } } public class TableInfo {  public TableInfo()  {   columns = new List<CloumnInfo>();  }  public string TableName { get; set; }  public List<CloumnInfo> columns { get; set; } } public class CloumnInfo {  public string CloumnName { get; set; }  public string DateType { get; set; } }}

關于“SQL Server數據庫中的表名稱和字段實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注創新互聯行業資訊頻道,小編每天都會為大家更新不同的知識點。

名稱欄目:SQLServer數據庫中的表名稱和字段實例分析-創新互聯
URL地址:http://www.2m8n56k.cn/article26/docijg.html

成都網站建設公司_創新互聯,為您提供小程序開發電子商務網站設計靜態網站網站策劃微信公眾號

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
主站蜘蛛池模板: 杨幂国产精品福利在线观看 | 亚洲天码中文字幕第一页 | 自拍偷自拍亚洲精品10p | 在线观看精品视频一区二区三区 | 在线国产一区二区三区 | 92看片淫黄大片看国产片 | a级高清观看视频在线看 | 欧美一级视屏 | 老司机毛片 | 日本在线观看免费视频网址 | 在线观看免费亚洲 | 成人三级精品视频在线观看 | 国产在线观看一区精品 | 大美女香蕉丽人视频网站 | 成人国产综合 | 日韩视频专区 | 亚洲日本一区二区三区在线 | 亚洲高清视频在线 | 久草在线资源视频 | 欧美一级高清毛片aaa | 99在线精品视频 | 国产精品国产三级国产a | 女人抠逼视频 | 亚洲国产欧美日韩精品一区二区三区 | 91影视做在线观看免费 | 99在线在线视频免费视频观看 | 新久草视频 | 99国产精品久久久久久久成人热 | 国产精品久久久久影院色 | 美女黄18| 中国高清色视频www 中国黄色网址大全 | 欧美午夜精品久久久久久黑人 | 国产在视频线精品视频www666 | 国产日产欧美精品一区二区三区 | 国产午夜免费福利红片 | 日韩在线高清 | 京东一热本色道久久爱 | 草草久 | 久久免费观看视频 | 97免费公开视频 | 男人天堂avav |