zoukankan      html  css  js  c++  java
  • 如何在c#代码中执行带GO语句的SQL文件

    需要在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语言)
    Python类中的self到底是干啥的
    浅析Python3中的bytes和str类型
    Shell十三问[转]
    VMware下对虚拟机Ubuntu14系统所在分区sda1进行磁盘扩容
    C语言运算符优先级
    mysql主要性能监控指标
    sql 优化
    npm install安装时忘记--save解决方法
  • 原文地址:https://www.cnblogs.com/dacheng/p/3178907.html
Copyright © 2011-2022 走看看