ASP.NET开发网站程序常见错误-设计理念(2)

王朝数码·作者佚名  2011-04-19
宽屏版  字体: |||超大  

这还不算什么,更有甚者,尽然在循环语句里写下面的代码如:

[Sample-02]

Foreach(DataRow row in tabl.select(“”,”ProductID”)

……………

clsOraDb.Open(strConn)

………….

Next

有人还喜欢玩下面的语句:

[Sample-03]

Foreach(DataRow row in tabl.select(“”,”ProductID”)

Foreach(DataColumn col in tbl.columns)

……………

clsOraDb.Open(strConn)

Next

………….

Next

说到这,有人就问啦,我在开发环境下测试一点问题都没有呀?是呀,你是没有问题,我想问的是,你开发环境的测试数据有几笔?

现在,问题已经知道在哪里,怎么解决?

针对[sample-01]做如下处理,注意下面代码:

Public Shared Function getOEMPN(ByVal psPN As String, ByRef OEMPN As String) As BSResult

0001 Dim clsResult As New BSResult

0002 Try

0003 clsResult.ResultID = -1

0004 Dim dtResult As New DataTable

0005 Dim Sql As String = String.Empty

0006 Dim clsOraDb As New clsOraClienDb

0007 Dim strConn As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

0008 clsOraDb.Open(strConn) 注释:这里Open后,后面看不到 clsOraDb.Close

0009 Sql = "SELECT SATBMMBRND.OEMPN FRUNO FROM SATBMMBRND WHERE SATBMMBRND.MATNO = :MATNO"

0010 Dim params() As OracleParameter = {New OracleParameter("MATNO", psPN)}

0011 If clsOraDb.FillDataTable(Sql, dtResult, params) = False Then

0012 Return clsResult

0013 End If

0014 If dtResult Is Nothing Then

0015 Return clsResult

0016 End If

0017 If dtResult.Rows.Count 0 Then

0018 OEMPN = dtResult.Rows(0)("FRUNO").ToString()

0019 Else

0020 OEMPN = ""

0021 End If

0022 clsResult.ResultID = 1

0088 clsOraDb.Close 注释:后面看到 clsOraDb.Close

0023 Return clsResult

0024 Catch ex As Exception

0099 clsOraDb.Close 注释:程序异常也看到 clsOraDb.Close

0025 clsResult.ResultID = -1

0026 Return clsResult

0028 Throw ex

0027 End Try

End Function

注意上面的两句代码:0088行和0099行。

在异常处理的时候,特别提醒两点:

一, 你的数据库关闭的时候应该是在代码行0028前,而不是后;

二, 有人不习惯(或者一时疏忽)加上0088行的代码;

针对[Sample-02]和[sample-03],把打开数据库连接写在所有的循环语句之前,如:

clsOraDb.Open(strConn)

Foreach(DataRow row in tabl.select(“”,”ProductID”)

……………

………….

Next

当然还有另外一个做法,就是用Using语

第一页    上一页    第2页/共6页    下一页    最后页
第01页 第02页 第03页 第04页 第05页 第06页 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有