日期:2014-05-20  浏览次数:20786 次

用c#怎么执行一个sql脚本(如:abc.sql)
用c#怎么执行一个sql脚本(如:abc.sql),连接的数据库是Oracle.

再现等待,谢谢。

------解决方案--------------------
读到string,用command执行

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
//---这个是winform程序使用sql server 命令行程序osql.exe的,楼主只需要修改成Oracle相应的命令行即可
private void execSql()
{
System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
sqlProcess.StartInfo.FileName = "cmd.exe ";
sqlProcess.StartInfo.Arguments = "/c "+ " echo off echo 执行数据库更新... ";
sqlProcess.StartInfo.FileName = "osql.exe ";
//string a = String.Format( " -U {0} -P {1} -d {2} -i Weblogs.sql ",tbUser.Text.Trim(),tbPassword.Text.Trim(), "master ",Application.StartupPath+ "\\ ");
sqlProcess.StartInfo.Arguments = String.Format( " -U {0} -P {1} -d master -i Weblogs.sql ",tbUser.Text.Trim(),tbPassword.Text.Trim());
sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
sqlProcess.Start();
sqlProcess.WaitForExit() ;//等待执行
sqlProcess.Close();
}
------解决方案--------------------
用一个command,commandtext从sql文件读取。
------解决方案--------------------
最简单的,直接用COMMAND执行
------解决方案--------------------
楼上 的都可以

不过 还是建议 用读到string的方法
------解决方案--------------------
string filepath = "aaa.sql ";
System.IO.StreamReader sr = new System.IO.StreamReader(filepath);
string sqlstr = sr.ReadToEnd();
sr.Close();
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(sqlstr, sqlConnection);
Command.Connection.Open();
Command.ExecuteNonQuery();
Command.Connection.Close();
------解决方案--------------------
文件c:/a.sql
----------------------
create table t1(a int)
insert t1 select 1
select * from t1
drop table t1

执行sql
---------------------
SET NOCOUNT ON
EXEC MASTER..XP_CMDSHELL 'OSQL -E -i c:/a.sql '
------解决方案--------------------
可以的,用 "; "号分开比较好点。

还有在前面加上SET NOCOUNT ON;
后面加上SET NOCOUNT OFF;