下面是使用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 

......{ 
public class ZZConsole 

......{ 
[STAThread] 
static void Main(string[] args) 

......{ 
string sqlQuery = "osql.exe /uSa /p123 /s192.192.132.229 /dNorthWind /i yoursql.sql"; 
string strRst = ExeCommand(sqlQuery); 
Console.WriteLine(strRst); 
Console.ReadLine(); 
} 


public static string ExeCommand(string commandText) 

......{ 
Process p = new Process(); 
p.StartInfo.FileName = "cmd.exe"; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardInput = true; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.CreateNoWindow = true; 
string strOutput = null; 
try 

......{ 
p.Start(); 
p.StandardInput.WriteLine(commandText); 
p.StandardInput.WriteLine("exit"); 
strOutput = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
p.Close(); 
} 
catch(Exception e) 

......{ 
strOutput = e.Message; 
} 
return strOutput; 
} 
} 
} 
osql语句特别注意大小写! 可用-U username 或/U username,但不能用-u username
对于osql命名的参数如下:
=====================
用法: osql [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w columnwidth]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-L list servers] [-c cmdend] [-D ODBC DSN name]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-n remove numbering] [-m errorlevel]
[-r msgs to stderr] [-V severitylevel]
[-i inputfile] [-o outputfile]
[-p print statistics] [-b On error batch abort]
[-X[1] disable commands [and exit with warning]]
[-O use Old ISQL behavior disables the following]
[-? show syntax summary]
具体参考
http://www.588188.com/netbook/sqlserver2000/coprompt/cp_osql_1wxl.htm
或者sql server 2000帮助文档

本文介绍了一种使用C#通过调用cmd执行osql命令的方法,以此来运行SQL脚本。该方法适用于需要从C#应用程序中执行SQL Server数据库操作的场景。
1707

被折叠的 条评论
为什么被折叠?



