zoukankan      html  css  js  c++  java
  • 谈一谈在工作过程中搜集的.NET小工具小程序 数据库脚本工具 VS2010/2012风格的界面框架

    工作中遇到的问题,经常会在网络上搜集一些相关的内容,以此扩展以解决相同性质的问题,StackOverflow,CodeProject,CodPlex是我经常查找内容的网站。以下分享我找到的一些比较有典型意义的程序,列举工作中中可以能会遇到的场景和解决方法。

    SQL Server Runner

    网址:http://www.codeproject.com/Articles/22882/SQL-Server-Runner-Part-1 

    分类: 数据库实用工具

    工作中经常会遇到,新增表或新增字段,像下面的SQL语句片段这样

    IF NOT EXISTS(SELECT C.NAME FROM DBO.SYSCOLUMNS C, DBO.SYSOBJECTS O WHERE O.ID = C.ID AND  O.NAME = 'PRSBPN' AND  C.NAME = 'X')
    
    BEGIN
        Alter table [PRSBPN] add [Y_UOM]      [nvarchar](4)
    End
    GO
    在自己的电脑上,可以用SQL Server Management Studio的Table Designer来设计,但是到了客户那边,不太可能有机会启动表设计器来添加字段,于是需要一个工具,把自己生成的字段变成SQL语句,客户那边只需要运行一个SQL语句,即可完成添加表和字段的动作。

    image

    SQL Server Runner可以运行指定的目录中的SQL语句,这一点就可以满足我的需求。使用方法也很直观,打开数据库连接,选定数据库,选择要运行的SQL文件所在的目录,然后执行(Run Scripts)即可。额外的,SQL Server Runner可以把当前的数据库连接,SQL文件目录位置等信息保存起来(xml文件),下次有SQL更新时,把更新后的SQL语句拷贝到指定的目录中,再运行SQL Server Runner打开原来的项目文件,运行一次即可。

    CodeProject中另有一个相同作用的功能的,Generating osql Batch Scripts,它争对指定的目录,生成一个OSQL的批处理文件,再通过运行这个批处理文件以达到更新数据库的目的。

    image

    可以这样调用它的源代码

    OsqlScript oscript = new OsqlScript("C:\\scripts",
                              "C:\\scripts\\ExecuteScripts");
    oscript.Server = "MyServer";
    oscript.Database = "Northwind";
    oscript.UseIntegratedSecurity = true;
    oscript.UseReportFile = true;
    oscript.ReportFile = "Report.txt";
    
    //generate the file
    oscript.Generate();

    VS 2010/2012 Look-like 界面框架

    网址: http://www.codeproject.com/Articles/551885/How-to-create-a-VS-2012-like-application-Wide-IDE

    分类:界面框架

    经常会做一点小工具,小源码,不可避免的要选择一些界面框架来完成任务。VC++ 6时,Document/View文档/视图结构,C# 2.0时,经常选MDI,再到后来,Tab MDI,再后来,Office Ribbon,界面框架在不停演化,使它看起来更美观,更有利于表达软件的功能。Visual Studio出来之后,有大量的软件模范其界面,用关键字Visual Studio Look-like搜索,可以找到相关内容,以实现模范Visual Studio界面风格的界面框架,这里介绍Wide IDE Framework。

    先来上两张图,以看看它的效果

    VS 2012 风格的界面

    image

    VS 2010风格的界面

    image

    效果实现的相当不错,Wide框架也引用到一 些第三方的开源类库,列举如下

    如果想让你的工具界面看起来更漂亮一些,可以考虑试验一下这些开源的组件。License许可为GNU,

    The GNU Lesser General Public License (LGPLv3)

    Office 2007 ToolStrip Render   Office 2007 Blue风格的工具条

    网址: http://www.codeproject.com/Articles/16666/Office-2007-ToolStrip-Renderer

    分类: 界面框架

    只需要三个cs文件,你的程序中的tool strip就可以变成Office 2007 Blue风格,蓝色的背景看起来有些专业。

    上个图,我做的小工具界面,集成了一些常用的工具程序,重点是它的Office Blue风格。

    image

    使用它的方法也简单,以下二行代码即可:

    ToolStripManager.Renderer = new Office2007Renderer();
    statusStrip.Renderer = new Office2007Renderer();

    Script SQL Server Data 把SQL Server数据变成SQL脚本

    网址:http://www.codeproject.com/Articles/5598/Generating-INSERT-statements-in-SQL-Server

    分类: 数据库实用工具

    经常遇到一些问题,在客户的地方,因为有问题,而在我们这边没有问题。经过我折腾多次的经验,还是直接拿客户的数据库过来测试,这样靠谱一些,也容易定位问题。但有时候,客户的数据库很大,有100GB以上,即使用WinRAR压缩一下也有10G,刻成DVD,再经过快递公司送到开发部这边来,时间上要延迟一下,而且不是每次出问题,都要这样。一方面是要为程序建立跟踪机制,可以跟踪程序的数据输入输入,堆栈调用,另一方面,如果是数据库的问题,需要把有问题的数据打包,传回来试一下。整个数据库打包有点不现实,那就要只把可疑的数据打包,变成SQL传到开发部来。下面介绍的工具,就是实现这个目的。

    image

    Table Insert Statements可以把存储在表中的数据,变成SQL语句文本文件。因为在很多场景中,这个功能实在太需要了,于是我做出一个增强版的Query Generator,以满足数据转移的需求。

    image

    与CodeProject中不同的地方,我可以择需要的数据行生成SQL语句,还可以选择字段。选择字段这个功能有相当重要的作用,比如数据表有一个字段是种子类型(identity),一般情况下是不能给种子类型插入数据,请看MSDN中的例子

    USE AdventureWorks2008R2;
    GO
    -- Create tool table.
    CREATE TABLE dbo.Tool(
       ID INT IDENTITY NOT NULL PRIMARY KEY, 
       Name VARCHAR(40) NOT NULL
    )
    GO
    -- Inserting values into products table.
    INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
    INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
    INSERT INTO dbo.Tool(Name) VALUES ('Saw')
    INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
    GO
    
    -- Create a gap in the identity values.
    DELETE dbo.Tool 
    WHERE Name = 'Saw'
    GO
    
    SELECT * 
    FROM dbo.Tool
    GO
    
    -- Try to insert an explicit ID value of 3;
    -- should return a warning.
    INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
    GO
    -- SET IDENTITY_INSERT to ON.
    SET IDENTITY_INSERT dbo.Tool ON
    GO
    
    -- Try to insert an explicit ID value of 3.
    INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
    GO
    
    SELECT * 
    FROM dbo.Tool
    GO
    -- Drop products table.
    DROP TABLE dbo.Tool
    GO

    脚本解释了当要为种子类型字段直接插入值时,要设计它为IDENTITY_INSERT为ON,之后如果要能让SQL Server自动插入种子值,又要设为OFF。

    如果上在面的脚本生成工具中,我把种子类型的列去掉,不生成它的数据,问题就容易多了,根本不用考虑设置IDENTITY_INSERT。从设计意义上来说,IDENTITY类型常常用来维护数据,它是唯一的,对数据库资料的维护,数据间的对比,有重要的意义。ERP数据表中,主档表,日记帐表,每个表都给它加上这个类型,在ERP维护时,有很好的作用。

  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/3094294.html
Copyright © 2011-2022 走看看