.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并合并的小程序。