最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQLServer數(shù)據(jù)庫(kù)中的表名稱和字段實(shí)例分析

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

公司主營(yíng)業(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)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(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)歷了一次周期跨度較長(zhǎng)的更新后,當(dāng)我們發(fā)布到生產(chǎn)環(huán)境時(shí),首要的任務(wù)是將新增的表,字段更新到生產(chǎn)數(shù)據(jù)庫(kù)。很多時(shí)候,當(dāng)我們發(fā)布更新的時(shí)候,已經(jīng)很難記得做了哪些變更。

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

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

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

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

說(shuō)干就干(本來(lái)想著用EF,DBContext應(yīng)該可以實(shí)現(xiàn),無(wú)奈學(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 GetTableNames(string connectionstr)  {   var tableresult = new List();   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 GetColumnNamesByTable(string tableName, SqlConnection connection)  {   var Columnresults = new List();   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 prd, List 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();  }  public string TableName { get; set; }  public List columns { get; set; } } public class CloumnInfo {  public string CloumnName { get; set; }  public string DateType { get; set; } }}

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


當(dāng)前標(biāo)題:SQLServer數(shù)據(jù)庫(kù)中的表名稱和字段實(shí)例分析
本文來(lái)源:http://fisionsoft.com.cn/article/pgpeho.html