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

  • 相关阅读:
    android 中 Canvas和Paint
    【30篇突击 android】源码统计 十五
    【eoe特刊】第二十七期 OpenGL ES学习及项目解析
    java项目打jar包
    用Think Pad 系统升级程序ThinkVantage System Update时候提示 无法连接代理服务器 的解决办法
    asp.net中部打开新页面下载文件
    java混淆器proguard的一些资料
    flex中接收非utf8编码的后台数据
    Win2003 sp2 下安装IIS,会提示找不到iisadmin.mfl等文件无法继续安装的解决方法
    windows下部能用域名访问网址或共享文件夹的解决方法
  • 原文地址:https://www.cnblogs.com/dacheng/p/3178907.html
Copyright © 2011-2022 走看看