问题描述
c#执行如下语句,出错。无论用nonqueryexcute还是readerexcute都不行stringstrSql=@"declare@typechardeclare@idbigintset@id=selectmax(Sid)fromStreamset@type=selectStreamTypefromStreamwhereSid=@idif@type='a'thenselectTalk.Talk,UserOfUp.Latitude,UserOfUp.LongtitudefromUserOfUp,Talk,StreamwhereUserOfUp.UserId=1andStream.StreamId=Talk.TalkIdandStream.Sid=@idend";
---------------------------------error:关键字'select'附近有语法错误。关键字'select'附近有语法错误。关键字'then'附近有语法错误。'end'附近有语法错误。
解决方案
解决方案二:
上面有点乱,改一下stringstrSql=@"declare@typechardeclare@idbigintset@id=selectmax(Sid)fromStreamset@type=selectStreamTypefromStreamwhereSid=@idif@type='a'thenselectTalk.Talk,UserOfUp.Latitude,UserOfUp.LongtitudefromUserOfUp,Talk,StreamwhereUserOfUp.UserId=1andStream.StreamId=Talk.TalkIdandStream.Sid=@idend";
解决方案三:
引用1楼jack2684的回复:
上面有点乱,改一下C#codestringstrSql=@"declare@typechardeclare@idbigintset@id=selectmax(Sid)fromStreamset@type=selectStreamTypefromStreamwhereSid=@idif@type='a'thensele……
你最好把它写成存储过程来执行
解决方案四:
这个应该就是sql语句的错误了,你在sqlserver里面先执行下试试
解决方案五:
if@type='a'selectTalk.Talk,UserOfUp.Latitude,UserOfUp.LongtitudefromUserOfUp,Talk,StreamwhereUserOfUp.UserId=1andStream.StreamId=Talk.TalkIdandStream.Sid=@id";//改成这样 不要thenend这个语法错误,LZ试下
解决方案六:
引用1楼jack2684的回复:
上面有点乱,改一下C#codestringstrSql=@"declare@typechardeclare@idbigintset@id=selectmax(Sid)fromStreamset@type=selectStreamTypefromStreamwhereSid=@idif@type='a'thensele……
在sql版回答了declare@typechardeclare@idbigintset@id=(selectmax(Sid)fromStream)set@type=(selectStreamTypefromStreamwhereSid=@id)if@type='a'then(selectTalk.Talk,UserOfUp.Latitude,UserOfUp.LongtitudefromUserOfUp,Talk,StreamwhereUserOfUp.UserId=1andStream.StreamId=Talk.TalkIdandStream.Sid=@id)end
解决方案七:
引用2楼chinajiyong的回复:
引用1楼jack2684的回复:上面有点乱,改一下C#codestringstrSql=@"declare@typechardeclare@idbigintset@id=selectmax(Sid)fromStreamset@type=selectStreamTypefromStreamwhereSid=@id……
同意,改成存储过程执行比较好。
解决方案八:
断点调试,看看你生成的SQL语句是什么,拿到数据库里执行,看看到底哪里出错了引用4楼rekym的回复:
if@type='a'selectTalk.Talk,UserOfUp.Latitude,UserOfUp.LongtitudefromUserOfUp,Talk,StreamwhereUserOfUp.UserId=1andStream.StreamId=Talk.TalkIdandStream.Sid=@id";//改成这样 不要then……