.NET调用osql.exe执行sql脚本创建表和存储过程

简介: 文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/using System;using System.Diagnostics;using System.
文章出处:http: // wenjl520.cnblogs.com/  或   http://www.cnblogs.com/

using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
     public  partial  class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
        }

         private  void button1_Click( object sender, EventArgs e)
        {
             // 参数
             string[] args =  new  string[ 5];
            args[ 0] =  " -U  " + txtUserName.Text;  // 用户名
            args[ 1] =  " -P  " + txtPassword.Text;  // 用户密码
            args[ 2] =  " -S  " + txtServer.Text;  // 服务器
            args[ 3] =  " -d  " + txtDatabase.Text;  // 数据库
            args[ 4] =  " -i  " + AppDomain.CurrentDomain.BaseDirectory +  " Install.sql "// sql脚本路径

            
// 执行
            textBox1.Text = CommandLine( " osql.exe ", args);
        }

         #region 调用命令行工具

         ///   <summary>
        
///  调用命令行工具
        
///   </summary>
        
///   <param name="name"> 命令行工具名称 </param>
        
///   <param name="args"> 可选命令行参数 </param>
        
///   <remarks> 注意:所有命令行工具都必须保存于system32文件夹中 </remarks>
        
///   <returns></returns>
         private  string CommandLine( string name,  params  string[] args)
        {
             return CommandLine(name,  "", args);
        }

         ///   <summary>
        
///  调用命令行工具
        
///   </summary>
        
///   <param name="name"> 命令行工具名称 </param>
        
///   <param name="workingDirectory"> 设置工作目录 </param>
        
///   <param name="args"> 可选命令行参数 </param>
        
///   <remarks> 注意:所有命令行工具都必须保存于system32文件夹中 </remarks>
        
///   <returns></returns>
         private  string CommandLine( string name,  string workingDirectory,  params  string[] args)
        {
             string returnValue =  "";

             using (Process commandline =  new Process())
            {
                 try
                {
                    commandline.StartInfo.UseShellExecute =  false;
                    commandline.StartInfo.CreateNoWindow =  true;
                    commandline.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    commandline.StartInfo.RedirectStandardOutput =  true;
                    commandline.StartInfo.FileName = name;
                    commandline.StartInfo.WorkingDirectory = workingDirectory;
                     // 添加命令行参数
                     if (args.Length >  0) commandline.StartInfo.Arguments =  string.Join( "   ", args);
                    commandline.Start();
                    commandline.WaitForExit();
                    returnValue = commandline.StandardOutput.ReadToEnd();
                    commandline.Close();
                }
                 catch
                {
                    commandline.Dispose();
                     throw;
                }
            }

             return returnValue;
        }

         #endregion
    }
}

复制代码
 
 
 

目录
相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
979 10
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
983 3
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
463 1
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
901 11
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
368 3
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
711 1
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
897 1
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
275 3
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
303 1
|
存储 NoSQL JavaScript
MongoDB存储过程实战:聚合框架、脚本、最佳实践,一文全掌握!
【8月更文挑战第24天】MongoDB是一款备受欢迎的文档型NoSQL数据库,以灵活的数据模型和强大功能著称。尽管其存储过程支持不如传统关系型数据库,本文深入探讨了MongoDB在此方面的最佳实践。包括利用聚合框架处理复杂业务逻辑、封装业务逻辑提高复用性、运用JavaScript脚本实现类似存储过程的功能以及考虑集成其他工具提升数据处理能力。通过示例代码展示如何创建订单处理集合并定义验证规则,虽未直接实现存储过程,但有效地演示了如何借助JavaScript脚本处理业务逻辑,为开发者提供更多实用指导。
386 2