欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SQLServer數(shù)據(jù)庫中的表名稱和字段實(shí)例分析

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

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出金臺(tái)免費(fèi)做網(wǎng)站回饋大家。

前言

項(xiàng)目中一般分測(cè)試環(huán)境(QAS),生產(chǎn)環(huán)境(PRD),當(dāng)我們的項(xiàng)目經(jīng)歷了一次周期跨度較長的更新后,當(dāng)我們發(fā)布到生產(chǎn)環(huán)境時(shí),首要的任務(wù)是將新增的表,字段更新到生產(chǎn)數(shù)據(jù)庫。很多時(shí)候,當(dāng)我們發(fā)布更新的時(shí)候,已經(jīng)很難記得做了哪些變更。

當(dāng)然有的人會(huì)說,1.EF Code First 有history記錄,這是一種辦法,可靠么?不可靠。相信即便是用Code First,直接改數(shù)據(jù)庫的肯定不止我一個(gè)。

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

3.開發(fā)過程中,對(duì)數(shù)據(jù)庫的變更記下來。這么做過的肯定也不止我一個(gè)。

想著另外一個(gè)項(xiàng)目下個(gè)月要更新,改了N多的東西,到時(shí)候數(shù)據(jù)庫咋更新呢。就想著寫個(gè)工具比較兩個(gè)版本數(shù)據(jù)庫,表名稱,字段,字段類型的區(qū)別。

說干就干(本來想著用EF,DBContext應(yīng)該可以實(shí)現(xiàn),無奈學(xué)藝不精,最終還是回到了ADO.Net)。

控制臺(tái)應(yīng)用程序,目前只能對(duì)比新增,修改(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; } }}

關(guān)于“SQL Server數(shù)據(jù)庫中的表名稱和字段實(shí)例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

網(wǎng)頁題目:SQLServer數(shù)據(jù)庫中的表名稱和字段實(shí)例分析
文章地址:http://chinadenli.net/article40/pgpeho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)標(biāo)簽優(yōu)化App開發(fā)手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站制作域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)