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

文章出处: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
    }
}

复制代码
 
 
 

时间: 2024-07-31 23:13:30

.NET调用osql.exe执行sql脚本创建表和存储过程的相关文章

java-操作数据库的.exe程序,可以批量执行sql脚本文件

问题描述 操作数据库的.exe程序,可以批量执行sql脚本文件 求大神帮忙啊~用java可以做这个东西吗?完全没有思路啊,要求是可以操作局域网内的另一台电脑上的mysql数据库 解决方案 如果有访问权限的话,直接运行Runtime.getRuntime().exec("远程IP文件路径exe文件");如果没有,那可以先用java进行telnet连接到那台机器,然后调用exe程序,再不行就只能在远程机器上写webservice服务然后调用了. 解决方案二: 批量执行SQL脚本 解决方案三

在.net执行sql脚本的简单实现

脚本|执行 在.net执行sql脚本的简单实现 郑佐2004-12-25 看到csdn社区经常有人问在.net中如果执行sql脚本,下面是使用C#调用cmd来执行osql实现脚本的执行. using System; using System.Data; using System.Collections; using System.Xml; using System.IO; using System.Text; using System.Diagnostics; namespace ZZ { pu

Inno Setup执行SQL脚本的方法

原文:Inno Setup执行SQL脚本的方法 作为和NSIS并立的.两个最流行的免费Windows应用程序安装包制作工具之一,Inno在学习难度上相对要低一些,非常适合对一些简单的桌面程序打包.但对于较复杂的安装过程,或者Web应用程序来说,我个人觉得不是Inno的强项.当然,既然Inno内嵌了Pascal语言用以扩展功能,理论上不是不可以应付复杂的安装过程,但实现起来要复杂一些. 比如对于在安装过程中连接数据库并执行SQL脚本这样的需求,使用InstallShield应该会简单地多,而Inn

SQL Server中使用外部命令执行sql脚本

server|脚本|执行 Author:David EulerDate: 2004/09/28Email:de_euler-david@yahoo.com.cn 有任何问题,请与我联系:)    有时候我们需要多次运行一个文件夹下所有的sql脚本(可能时txt或者sql等文本文件)来更新Schema,文件多的时候需要多次执行,那么可以使用多条语句来执行sql脚本.--下面的查询语句在SQL Query中运行,将执行d:\vss下面的指定sql脚本,这些脚本的后缀都是txtexec master.

java执行SQL脚本的一个问题

问题描述 今天准备在java中,利用ant来执行sql脚本,进行数据相关脚本部署,如存储过程,建表等.运行过程中,出现了特别常见的sql语法错误.可以经过检查没有错误,为了保证没有错误,还特地在sqlserver的控制台直接用source来执行了一次,同样没有错误.sqlExec.setDriver(driver);sqlExec.setUrl(db);sqlExec.setUserid(user);sqlExec.setPassword(password);//有出错的语句该如何处理sqlEx

java sql 脚本-java执行SQL脚本!!!!!

问题描述 java执行SQL脚本!!!!! 今天第一次用 java 执行sql脚本,是不是sql.out里边如果没东西就意味着成功?可我执行完成后表数据全都建好了 但是 sql.out里边显示的内容是这些 我需要做个判断 显示 是否成功 ,这个判断要怎么做?(重点是怎么才能根据sql.out里边的信息 来判断是否执行成功 ) 解决方案 sql.out 的显示信息 解决方案二: 看一下下面的代码处理方式http://mxm910821.iteye.com/blog/1701822

Ant 执行sql脚本 出现语法错误

问题描述 今天准备在java中,利用ant来执行sql脚本,进行数据相关脚本部署,如存储过程,建表等.运行过程中,出现了特别常见的sql语法错误.可以经过检查没有错误,为了保证没有错误,还特地在sqlserver的控制台直接用source来执行了一次,同样没有错误.sqlExec.setDriver(driver);sqlExec.setUrl(db);sqlExec.setUserid(user);sqlExec.setPassword(password);//有出错的语句该如何处理sqlEx

java用ant.jar工具类执行sql脚本遇到问题

问题描述 java用ant.jar工具类执行sql脚本遇到问题 最近在研究用工具类ant.jar执行sql脚本文件,一般对数据和字段的操作都无问题,但当要执行生成触发器或者存储过程时却出错,有大神做过这方面的吗?或者用其他方法可以执行能生成存储过程和触发器的sql脚本?求解!新人无币,望见谅~ Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an

如何获得 sqlExec执行SQL脚本 的错误信息

问题描述 如何获得 sqlExec执行SQL脚本 的错误信息 SQLExec sqlExec = new SQLExec(); //设置数据库参数 sqlExec.setDriver("oracle.jdbc.driver.OracleDriver"); sqlExec.setUrl("jdbc:oracle:thin:@10.128.x.x:1521:xxsid"); sqlExec.setUserid("xxuser"); sqlExec.s