如何在c#代码中执行带GO语句的SQL文件
2013-07-08 23:04
851 查看
需要在C#代码中执行一个SQL文件的内容。遇到了两个问题:
1. 因为SQL文件中有“GO”语句,执行时报错“Incorrect syntax near 'GO'.”。
2. 如果将SQL文件中有“GO”语句全部去掉,则可能出现SQL运行错误。原因是去掉“GO”后,等于整个文件的内容一次执行,但是SQL文件有可能后面的内容需要在前面某些语句已经执行的基础上才能执行的。
解决的办法是:用一个StringBuilder,然后一行一行的读SQL文件,如果该行的内容不是“GO”,就向StringBuilder后Append。如果是“GO”,就执行StringBuilder的内的SQL语句,然后清空StringBuilder。这样就能达到与直接执行带“GO”语句的SQL文件一样的效果。
代码如下:
private static void ExecuteSQLFile(String sqlFileName)
{
SqlConnection connecction = null;
try
{
connecction = new SqlConnection(@"uid=XXXX; pwd=XXXX; server=XXXX; database=XXXX; connection timeout=30");
SqlCommand command = connecction.CreateCommand();
connecction.Open();
FileStream stream = new FileStream(sqlFileName, FileMode.Open);
StreamReader reader = new StreamReader(stream);
StringBuilder builder = new StringBuilder();
String strLine = "";
while ((strLine = reader.ReadLine()) != null)
{
if (strLine.Trim().ToUpper() != @"GO")
{
builder.AppendLine(strLine);
}
else
{
command.CommandText = builder.ToString();
command.ExecuteNonQuery();
builder.Remove(0, builder.Length);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (connecction != null && connecction.State != ConnectionState.Closed)
{
connecction.Close();
}
}
}
本文转自:http://www.cnblogs.com/zsh_robot/articles/1339932.html
相关文章推荐
- 如何在c#代码中执行带GO语句的SQL文件
- 如何在c#代码中执行带GO语句的SQL文件
- C#中 如何执行带GO的sql 语句
- C#中 如何执行带GO的sql 语句
- 如何用C#程序直接执行.sql文件里的SQL语句
- C#和Java中执行SQL文件脚本的代码(非常有用)
- 如何在 db2 管理器中执行一个包含 sql 语句的脚本文件
- C#中 一次执行多条带GO的sql语句
- 如何把一个sql文件里的内容通过php代码执行
- 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
- c#和java中执行sql文件脚本的代码(非常有用)
- C#中 一次执行多条带GO的sql语句
- C#中实现一次执行多条带GO的sql语句实例
- SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。
- 如何执行SQL语句(C#)
- C#读取*.sql文件,并执行里面的SQL语句
- 012-HQL中级2-Hive如何执行文件中的sql语句
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库
- 如何获取某个sql语句的执行计划系列三---格式化trace 文件