我正在创建一个具有文本框的应用程序,用户可以在其中输入要针对SQL Server实例运行的命令。我导入了System.Data.SqlClient
对象,这是我到目前为止的代码:
Dim preSQLcmd As String = Me.txtPreSQL.Text
Databasefn.preTestSQL(preSQLcmd)
Databasefn.preTestSQL
看起来像这样:
Sub preTestSQL(cmd As SqlCommand)
con = New SqlConnection("Data Source=" & utilnamespace.sqlSvr & ";Database=" & utilnamespace.testDbName & ";integrated security=SSPI;")
cmd.Connection.Open()
cmd.ExecuteNonQuery()
cmd.Connection.Close()
End Sub
我在这里缺少什么?
答案 0 :(得分:3)
更改您的preTestSql
以使用sql命令文本接收字符串,然后在过程中构建 SqlCommand
Sub preTestSQL(cmdText As String)
using con = New SqlConnection("Data Source=" & utilnamespace.sqlSvr & ";Database=" & utilnamespace.testDbName & ";integrated security=SSPI;")
using cmd = new SqlCommand(cmdText, con)
con.Connection.Open()
cmd.ExecuteNonQuery()
End Using
End Using
End Sub
说我应该问。 您确定这是明智的吗?。
恶意用户可以使用类似的功能轻松破坏整个数据库。
示例:
UPDATE PayRoll SET WeekWage = 1000 -- (no where condition??)
DELETE FROM Employee