• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

如何在c#代码中执行带GO语句的SQL文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 

需要在C#代码中执行一个SQL文件的内容。遇到了两个问题:

1.       因为SQL文件中有“GO”语句,执行时报错“Incorrect syntax near 'GO'.”。

2.       如果将SQL文件中有“GO”语句全部去掉,则可能出现SQL运行错误。原因是去掉“GO”后,等于整个文件的内容一次执行,但是SQL文件有可能后面的内容需要在前面某些语句已经执行的基础上才能执行的。

 

解决的办法是:用一个StringBuilder,然后一行一行的读SQL文件,如果该行的内容不是“GO”,就向StringBuilderAppend。如果是“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();

                }

            }

        }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用GDB调试Go语言发布时间:2022-07-10
下一篇:
Go缓存DNS发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap