在.net执行sql脚本的简单实现
2024-07-10 12:59:16
供稿:网友
 
在.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
{
 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命名的参数如下:
=====================
 
用法: 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帮助文档
 
上面程序是我以前在csdn回答问题时写的,由于最近比较忙,所以偷懒了。对于本文有什么好的建议或意见请留言。zhzuo(秋枫)