在一个VB命令中运行批处理SQL脚本
我正在尝试制作一个程序,以便在不安装SSM的情况下运行批处理SQL脚本 我已经做了一个基本的程序,它适用于单个查询在一个VB命令中运行批处理SQL脚本,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我正在尝试制作一个程序,以便在不安装SSM的情况下运行批处理SQL脚本 我已经做了一个基本的程序,它适用于单个查询 If MsgBox("Are you sure you want to execute this code?", MsgBoxStyle.YesNoCancel, "Are you sure?") = MsgBoxResult.Yes Then Dim cmd As New SqlClient.SqlCommand() Dim
If MsgBox("Are you sure you want to execute this code?", MsgBoxStyle.YesNoCancel, "Are you sure?") = MsgBoxResult.Yes Then
Dim cmd As New SqlClient.SqlCommand()
Dim connetionString As String
Dim conn As SqlConnection
Dim sql As String
connetionString = "Data Source=Localhost\database;Initial Catalog=master;Integrated Security=True"
conn = New SqlConnection(connetionString)
sql = RTB_Sql.Text
Try
conn.Open()
cmd.CommandText = sql
cmd.Connection = conn
cmd.ExecuteNonQuery() 'execute query
'AddHandler conn.InfoMessage, New SqlInfoMessageEventHandler(AddressOf OnInfoMessage)
Catch sqlEx As SqlException
MsgBox(sqlEx.Message)
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Else
End If
rtb_sql.text是一个包含用户sql的文本框
我希望这个程序使用变量、连接、更新和If语句运行批处理语句,但是它不能很好地处理它,最终会出错
这些代码在SSMS中是正确的,但在此程序中不是。是否可以将sql
声明为其他内容
谢谢
有人能提出解决办法吗
谢谢 SSMS和您的应用程序之间的最大区别在于,SSMS可以批量解析SQL语句,而您的应用程序将以单个命令的形式发送所有语句 因此,在应用程序中输入多条语句时,批处理中的每条语句都必须以分号结尾 例如,此输入将在SSMS中工作,但可能会在应用程序中导致错误:
DECLARE @id int
INSERT INTO MyTable (MyColumn) VALUES ('x')
SET @id = @@IDENTITY
SELECT @id
但该代码在以下两种情况下都适用:
DECLARE @id int;
INSERT INTO MyTable (MyColumn) VALUES ('x');
SET @id = @@IDENTITY;
SELECT @id;
没有一个简单的方法来编码你的方法。这将是一个用户培训问题。您会遇到什么错误?@variablename已经存在,尽管代码中存在“开始”和“结束”。嵌入式GOs如何?我不确定他们是否可以不经过特殊处理就处理。我记不得了。尝试使用分号和不使用分号,看看会发生什么。@TabAlleman-这两种方法都有效,但我将使用分号,看看这是否能解决问题。