分享一个SQL文件的合并的小程序

时间:2021-11-28 00:08:03

.net项目做久了,发现发布时候存储过程的打包一直是个很麻烦的事情,就是所有script都放在一个里面一起运行。

 

我想这个小程序应该对多数.net开发人都有用的,毕竟.net开发下没几个用ORM的,大多都是webform/winform+三层+存储过程的形式吧

 

所以后来为了方便自己省略点这一麻烦动作,做了个小程序将所有存储过程一起合并在一起默认在C盘

 

程序很小,代码如下

private void button2_Click(object sender, EventArgs e)
        {
            Thread waitT = new Thread(new ThreadStart(Progress));
            if (textBox1.Text == "")
            {
                MessageBox.Show("文件不能为空", "警告");
                return;
            }
            waitT.IsBackground = true;
            waitT.Start();
        }

        public void Progress()
        {
            try
            {
                FileInfo[] myFileInfo = (new DirectoryInfo(textBox1.Text)).GetFiles("*.sql");   //找到所有对应的sql文件
                string NewFileName = "";

                for (int i = 0; i < myFileInfo.Length; i++)//读取所有sql文件放在字符串里面
                {
                    string str = textBox1.Text + "\\" + myFileInfo[i].Name;
                    StreamReader Strsw = new StreamReader(str, Encoding.Default);
                    NewFileName += Strsw.ReadToEnd() + "\r\n\r\n Go \r\n\r\n";
                    Strsw.Close();
                }
                string FileName = @"C:\Update" + DateTime.Now.ToString("yyyyMM") + ".sql";//New出合并后的文件名
                FileStream myFs = null;
                if (!File.Exists(FileName))//新建文件,如存在则在原有基础上添加
                {
                    myFs = new FileStream(FileName, FileMode.Create);
                }
                else
                {
                    myFs = new FileStream(FileName, FileMode.Open);
                    MessageBox.Show("文件已存在,会在原有基础上添加");
                    StreamReader Strsw = new StreamReader(myFs, Encoding.Default);
                    NewFileName = Strsw.ReadToEnd() + "\r\n\r\n Go \r\n\r\n" + NewFileName;

                }
                StreamWriter sw = new StreamWriter(myFs, Encoding.UTF8);
                sw.Write(NewFileName);
                sw.Close();
                MessageBox.Show("合并完毕,文件长度" + NewFileName.Length.ToString("n").Split('.')[0] + "KB大小");
            }
            catch
            {
                MessageBox.Show("执行时出错");
            }
        }

只是在执行的时候New了一个新线程,其实都没多大必要,因为程序运行时间都在1秒内了。

 

做这个程序主要初衷还是希望尽量都能自动化吧,不希望程序员干这种重复的体力活。

 

在VS2010下编写的一个读写sql并合并的小程序。

下载地址