【发布时间】:2014-02-17 16:21:28
【问题描述】:
在我的 VB.Net 程序中,我发现两 (2) 个警告显示以下消息:
函数不会在所有代码路径上返回值。使用结果时可能会在运行时发生空引用异常
帮助我解决问题所在。以下快照是警告错误指示的位置:
“结束功能”附近的第一个警告
'Executes SQL commands to the system database
Public Function ExecSQL(ByVal sql As String)
Dim com As New MySqlCommand(sql)
Try
RefreshConnection()
com.Connection = con
com.ExecuteNonQuery()
Catch ex As Exception
Return ex
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Function
'End Function' 附近的第二次 Waring
'Get the value of an specific field in a given sql string
Public Function GetField(ByVal sql As String, ByVal field As String)
Try
RefreshConnection()
Dim com As New MySqlCommand(sql, con)
Dim dReader As MySqlDataReader = com.ExecuteReader
While dReader.Read
GetField = dReader(field).ToString
End While
dReader.Close()
Catch ex As Exception
Return ex
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Function
【问题讨论】:
-
这段代码在一个与您的问题无关的重要方面存在缺陷:它迫使您以极易受到 sql 注入攻击的方式构建 sql 查询。 它实际上是在乞求被黑。
-
另外:单个共享连接在 .Net 中不是最优的。相反,.Net 依赖于一种称为连接池的功能,因此在大多数情况下,您应该为每次调用数据库使用一个新的连接对象。真的。相反,只需保留一个共享连接 string 以方便创建连接。
-
哦,打开 Option Strict!
标签: vb.net visual-studio-2010 .net-4.0