回答

收藏

在.NET中将多个非SELECT MySQL语句作为单个命令文本执行

技术问答 技术问答 140 人阅读 | 0 人回复 | 2023-09-12

我一直在从一个线程跳到另一个线程,但似乎找不到我需要的答案。
% q7 w4 K2 E' J5 _) O我想使用.NET在单个ExecuteNonQuery函数中执行非SELECT MySQL语句。1 V/ @- L$ |* i0 U
这是我要运行的一组SQL语句示例:' D+ N  c* ^" B. C; R% T
DROP procedure IF EXISTS `SubProcA`;
. y- ^/ V' z8 EDROP procedure IF EXISTS `SubProcB`;
7 c& C& ~% {& r% n8 R( G# dDROP procedure IF EXISTS `SubProcC`;
; k+ S+ D# r9 ~
2 l8 h3 R6 f& nCREATE PROCEDURE 'SubProcD'()
- K- v. e: p' b8 X2 P" b9 k4 aBEGIN
4 c% A; k- f# H. F2 l& r2 `" v8 QSELECT
+ v6 N9 X6 ^5 I8 q     () AS A
8 J; @7 l  |- O) [+ Y- a: P2 b) Q     ,() AS B4 h4 {, J. z( a. B# I$ a# C
     ,() AS C;! C- s% s2 @7 R! V; k$ u. a7 L  H
END;; ~. d0 A9 \. Q. X
( [% T3 F- M# B# g. ~
CREATE PROCEDURE 'SubProcE'(9 f# ]" }% k  a8 ~3 G$ \
     VarA TEXT,
- Z& M6 B$ z  ^  M     VarB VARCHAR(255),9 R' h& y3 G* b
     VarC VARCHAR(255),
8 {$ A9 @( @& n& h8 c     VarD tinyint(1)# X. T8 c6 C  [
)
6 |( j; S# c' a' o8 EBEGIN: N  l0 b: m& B# l* R0 L" p0 i# S
     SET @Query = "";( m# \5 J' S) Z  A/ A4 J3 N7 g
     SET @Query = ;              
/ Q# k( S" }& K# r: ?, q/ L( I     PREPARE Statement FROM @Query;5 Q+ R/ p  g; ~$ @$ ?- I
     EXECUTE Statement;
: v7 i. E( U, Q8 q     DEALLOCATE PREPARE Statement; $ r& D2 o4 u3 n- m0 l7 f
END;
  j# I6 A& j7 v/ N1 m如您所见,其中有五个语句(3个DROP和2个CREATE)。我在.NET中所做的是:4 b. X- V1 |0 m6 y* o1 ~5 \
    CommandText =
6 I3 O0 A% z4 I6 l& x% d    Connection.Open()
8 _$ j9 s& R) ]8 R* p    Command.CommandType = CommandType.Text
% p7 T+ r$ O5 L    Command.ExecuteNonQuery()
9 w+ U6 G/ L* G    Connection.Close()+ w# O" Z/ }$ w* {& Q3 M: u
假设sql语句没有任何语法错误,则在运行代码时仍然会出现错误。4 z4 D' Z; m6 N/ q% A% u
我尝试砍掉(运行一条语句)的sql语句,并且将其推送通过。4 d9 }( g  k+ x7 q$ q" E
我是否应该在其中放置一些特殊字符?% i$ n( n  O+ W% a: Z& j4 A# C
                ( z1 N+ I8 L5 ?1 ~! W: I1 i
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则