C# 如何执行SQL脚本

happyday1799 2013-02-19 04:03:57
RT由于SQL脚本里有许多go等语句,所以使用C# SqlCommand执行SQL时会报“go 附近有语法错误”的异常,目前使用go拆分的方法已经解决,但新的问题是有output参数的语句也一样会报错:
“@tpkc nvarchar(10) output”附近有语法错误,语句如下:
exec sp_executesql @sqlCheck,N'@tpkc nvarchar(10) output',@tpkc output

请大神帮忙啊!!
...全文
482 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyday1799 2013-02-20
  • 打赏
  • 举报
回复
找到问题了,是因为exec里面第二个参数是NVarchar类型,所以开头N必须为大写,我在程序里全部转换成小写了,谢谢上面各位的帮忙了。
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 10 楼 adrianEvin 的回复:
exec sp_executesql @sqlCheck,N'@tpkc nvarchar(10) output',@tpkc output sp_executesql 这个是什么啊
这个是一个执行SQL的存储过程,SQL Server自带的。
adrianEvin 2013-02-19
  • 打赏
  • 举报
回复
exec sp_executesql @sqlCheck,N'@tpkc nvarchar(10) output',@tpkc output sp_executesql 这个是什么啊
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 8 楼 adrianEvin 的回复:
http://my.csdn.net/luckwave/code/detail/33720 这个里面有些带output的参数 你要定义一个类型 你看看你写SQL commend 对不对
他这个是如何调用存储过程问题,我这个是如何在C#里执行SQL的脚本问题,go是问题解决了,但现在有一个output的问题,一执行就报output附近有语法错误。
adrianEvin 2013-02-19
  • 打赏
  • 举报
回复
http://my.csdn.net/luckwave/code/detail/33720 这个里面有些带output的参数 你要定义一个类型 你看看你写SQL commend 对不对
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 5 楼 adrianEvin 的回复:
获取每一行时候 过滤掉你不想要的字符啊
RT里,不能过滤掉的。
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 4 楼 forever_code 的回复:
引用 3 楼 happyday1799 的回复:引用 1 楼 forever_code 的回复:我之前用过的,在网上找的. 希望能帮到你! C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 p……
go是可以过滤掉的,但RT里面那个output有一个返回参数,就是那句错了。
adrianEvin 2013-02-19
  • 打赏
  • 举报
回复
获取每一行时候 过滤掉你不想要的字符啊
EEEEEERROR 2013-02-19
  • 打赏
  • 举报
回复
引用 3 楼 happyday1799 的回复:
引用 1 楼 forever_code 的回复:我之前用过的,在网上找的. 希望能帮到你! C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 public static void Execut……
你先打开你的执行sql语句看看, 看看 是否都有 "go" 命令,你的sql语句直接运行没问题么.
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 1 楼 forever_code 的回复:
我之前用过的,在网上找的. 希望能帮到你! C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 public static void ExecuteSQLFile(String sqlFileN……
不行,失败了,还是因为output关键字的原因,哪位大神赶快帮忙啊!
happyday1799 2013-02-19
  • 打赏
  • 举报
回复
引用 1 楼 forever_code 的回复:
我之前用过的,在网上找的. 希望能帮到你! C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 public static void ExecuteSQLFile(String sqlFileN……
好的,多谢,我先测试测试。
EEEEEERROR 2013-02-19
  • 打赏
  • 举报
回复
我之前用过的,在网上找的. 希望能帮到你!
    public static void ExecuteSQLFile(String sqlFileName)
        {
            SqlConnection connecction = null;
            try
            {

                FrSetDbConnectionInfo fr = new FrSetDbConnectionInfo();
                if (fr.ShowDialog() == DialogResult.OK)
                {
                    string str = string.Format("server={0};database={1};user={2};pwd={3};", fr.dbInfo.Ip, "master", fr.dbInfo.SqlLoginName, fr.dbInfo.SqlPwd);
                    connecction = new SqlConnection(str);
                    XmlHelp.SetConString(fr.dbInfo.Ip, "YiYouData", fr.dbInfo.SqlLoginName, fr.dbInfo.SqlPwd);
                }
                else
                {
                    return;
                }

                connecction = new SqlConnection(DbHelperSQL.connectionString);

                SqlCommand command = connecction.CreateCommand();
                connecction.Open();

                using (FileStream stream = new FileStream(sqlFileName, FileMode.Open, FileAccess.ReadWrite))
                {
                    StreamReader reader = new StreamReader(stream, Encoding.Default);
                    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);
                        }
                    }
                    stream.Dispose();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (connecction != null && connecction.State != ConnectionState.Closed)
                {
                    connecction.Close();
                }
            }
        }

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧