下面的代码是从坛子里抄的,功能是在c#中执行SQL语句,如创建函数,注释中是原来的代码,能运行,但我把代码稍增加了几行,运行时就显示:第二行,'go'附近有语法错误,在查询分析器里执行也一样,把最后的GO换到另一行,在查询分析器里就能运行。我在代码中增加+"\n" +,但在c#中还是不能运行,请大家帮帮我!
private void b5_Click(object sender, System.EventArgs e)
{
/*sql = "CREATE PROCEDURE myProc AS"+
" SELECT myName, myAddress FROM myTable GO";*/
sql = "create function GET(@no int,@st varchar(10)) returns bit as begin return(convert   (bit,case @no"+
" when 1 then case when len(@st)=5 then 1 else 0 end "+
" when 2 then case when left(@st,1)='2' then 1 else 0 end "+
" when 3 then case when right(@st,1)='A' then 1 else 0 end "+
"end)) end " +"\n" +
"go"; 
ExecuteSQLStmt(sql); 
}private void ExecuteSQLStmt(string sql)
{
SqlCommand cmd = new SqlCommand(sql, myConn);
try
{
cmd.ExecuteNonQuery();
}
catch(SqlException ae)
{
MessageBox.Show(ae.Message.ToString());
}
}

解决方案 »

  1.   

    没用过,不知道把"\n"换成"\r\n"会不会解决问题。
      

  2.   

    我用MessageBox.show(sql)显示 go已经换成另一行了,在查询分析器里是能运行了,为什么在C#中就不行呢?
      

  3.   

    在C#中,通过ADO.NET去执行SQL时,最后不用加GO,如果有多条SQL要同时执行,你可以用“;”来隔开他们,注意是半角的。
      

  4.   

    是可以含有换行的,一般情况下加一个System.Environment.NewLine就可以了.也可以手工加上类似于\n\r之类的转义字符.
    当然,对于你此问来讲,用不着这些,你只需要和前面讲的一样以;号就可以了.SQL中,代码中GO是不需要的,GO = 代码中的exec了
      

  5.   

    太感谢了,不加GO真的能运行了。ADP.NET能同时执行多条SQL吗?该用什么命令?