SQL Server数据库中的表名称和字段实例分析
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要介绍"SQL Server数据库中的表名称和字段实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL Server数据库中的表名称和字段实
千家信息网最后更新 2024年11月25日SQL Server数据库中的表名称和字段实例分析
这篇文章主要介绍"SQL Server数据库中的表名称和字段实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL Server数据库中的表名称和字段实例分析"文章能帮助大家解决问题。
前言
项目中一般分测试环境(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 ListGetTableNames(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; } }}
关于"SQL Server数据库中的表名称和字段实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
数据
数据库
字段
更新
名称
实例
实例分析
分析
环境
知识
项目
生产
办法
时候
行业
过程
肯定
不同
实用
到时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
甘肃联想服务器续保维护
火山安卓软件开发平台6
重庆软件开发人才外包公司
oa软件开发数据库
目前最先进的软件开发技术
达梦数据库复制黏贴需要插件吗
安卓软件的服务器
云实互联网信息科技有限公司
水电站网络安全管理制度
埃辛诺斯 数据库
亚马逊服务器候鸟反指纹浏览器
软件开发情况说明
华信服务器设置
食管癌单细胞测序数据库
数据库应用系统可以直接删除
数据库怎么保存成log
网络安全技术属于哪一块
呼和浩特软件开发
如何托管服务器成本最低
神龙互联网科技成果
我的世界天域神奇宝服务器下载
小规模计算机软件开发
衡阳快速软件开发价格
加强全社会网络安全教育和培训
内丘县财政统计数据库
erp系统用的什么数据库
戴尔服务器如何查看管理ip
xampp本地数据库密码
国家如何加强网络安全与治理
sql数据库怎么刷新视图