在.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
解决方案: |
|
|
|
|
|