Question

reuse sql connection and sqlcommand in vb.net windows application

Asked by: johnnyg123

I have inherited maintenace of a Vb.Net Windows application that performs many sqlcommands against various tables in a single sql server 200 database.  I noticed that creation and closing of multiple connections to the same database and also the creation of multiple sqlcommands.
(Note: the connection info is retrieved from the app.config file)

(I have included some samples in the code window below)

This seems very inefficient to me.  Is there a way to create a single connection that can be reused as needed and then closed right before the windows application is closed?  Also, is it possible to have a single sqlcommand creation and just change the appropriate properties as needed?  Any examples would be great!

Here is some declaration of variables:
 
Public Class Form1
        Inherits System.Windows.Forms.Form
        Dim logfilepath, MgtAnalysis As String
        Dim datafilepath As String
        Dim errorfilepath As String
        Dim logdate, logfilename, logmsg, prcsflag, feedday As String
        Dim logwriter As StreamWriter
        Dim errorflag As Boolean
        Dim connstrGRP As String
        Dim strsqlselect As String
        Dim BegMoSeq, EndYr, EndMo, EndMoSeq, FinalMoSeq As Integer
        Dim scBegMoSeq, scEndYr, scEndMo, scEndMoSeq, scFinalMoSeq, scUpdEndYrMo, scPA, scPA1 As New SqlCommand
        Dim mySqlConn As New SqlClient.SqlConnection
        Dim sdrPA1 As SqlClient.SqlDataReader
        Dim beginmonthseq, endmonthseq As Integer
        Dim rankcalcdone As Boolean   'IT0801
 
 
 
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '********************************************************************************
            '***       Create/Write Log File Name                                         ***                                                                     
            '********************************************************************************
            Dim processerror As Boolean
 
            errorflag = False
            processerror = False
            rankcalcdone = False                                 'IT0801
            ' Get application config parameters
            Try
                logfilepath = System.Configuration.ConfigurationSettings.AppSettings("logfilepath").ToString
                datafilepath = System.Configuration.ConfigurationSettings.AppSettings("Datafilepath").ToString
                errorfilepath = System.Configuration.ConfigurationSettings.AppSettings("errorfilepath").ToString
                connstrGRP = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString.connstrGRP").ToString()
                MgtAnalysis = System.Configuration.ConfigurationSettings.AppSettings("MgtAnalysis").ToString
 
                logdate = Date.Now.Year.ToString + Date.Now.Month.ToString + Date.Now.Day.ToString + Date.Now.Hour.ToString + Date.Now.Minute.ToString
                logfilename = logfilepath + "\" + "PresidentAwardMonth" + logdate + ".txt"
                logwriter = New StreamWriter(logfilename)
                logmsg = " ***** President Award Monthly Analysis Process Begins ***** " + Now.ToString & vbCrLf
                logging(logmsg, logwriter)
                logmsg = " " & vbCrLf
                logging(logmsg, logwriter)
            Catch ex As Exception
                errorflag = True
                logmsg = " "
                logmsg = "     Error in Reading App.config file  " + ex.Message + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
                processerror = True
            End Try
 
            If errorflag = True Then
                ' processerror()
            End If
        End Sub
 
(Note: Sub Processfiles is the "main" sub.  It is called from the click event of the button the user clicks when ready to launch the processing)
 
Sub Processfiles()
 
            logmsg = "Preparing the SQL connection for getting the data - Begins at " + Now.ToString & vbCrLf
            logging(logmsg, logwriter)
            logmsg = " " & vbCrLf
            logging(logmsg, logwriter)
            datafilepath = Trim(datafilepath) + "\"
            errorfilepath = Trim(errorfilepath) + "\"
 
            PrcsCalScore()
 
            ' if rank calc completed successfully, then call stored proc for revised ranking, to incorporate sales component
            If rankcalcdone = True Then                                                                  'IT0801
                PrcsRevisedRank()                                                                             'IT0801
            End If                                                                                                       'IT0801
 
            mySqlConn.Close()
            FileClose(1)
            Me.Dispose(True)
            Application.Exit()
 
        End Sub
 
 
 Sub PrcsCalScore()
            Dim mySqlConn As SqlConnection = New SqlConnection(connstrGRP)
            Dim selectCMD As SqlCommand = New SqlCommand(strsqlselect, mySqlConn)
            selectCMD.CommandTimeout = 1240
 
            mySqlConn.Open()
 
 
            ' TRUNCATE TABLE MONTH PRESIDENT AWARD RESULT
            selectCMD.CommandText = "Truncate Table MonthPresidentAwardResult "
           
            Dim custDA As SqlDataAdapter = New SqlDataAdapter
            custDA.SelectCommand = selectCMD
 
            Try
                selectCMD.ExecuteNonQuery()
                logmsg = " "
                logmsg = "     Truncated table MonthPresidentAwardResult  " + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
            Catch ex As Exception
                errorflag = True
                logmsg = " "
                logmsg = "     Error in truncating table MonthPresidentAwardResult  " + ex.Message + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
            End Try
 
            'Added 6/12/2009 to see if need to clear and Load PresidentAwardSales table with shopm2sale data
            'This will allow for one off processing
            'Be sure to comment this out if changes were made 
 
            Dim Answer As Integer
            Answer = MsgBox("Reload PresidentAwardSales Table?", vbYesNo + vbExclamation, "Load PresidentAwardSales")
 
            If Answer = 6 Then
                'Yes   
                scPA.CommandType = CommandType.StoredProcedure
                scPA.CommandText = "sp_Load_PresidentAwardSalesTable"
                Try
                    scPA.ExecuteNonQuery()
                    logmsg = " "
                    logmsg = "     Executed stored procedure sp_Load_PresidentAwardSalesTable  " + Date.Now.ToString & vbCrLf
                    logging(logmsg, logwriter)
                Catch ex As Exception
                    errorflag = True
                    logmsg = " "
                    logmsg = "     Error in Executing stored sp_Load_PresidentAwardSalesTable  " + ex.Message + Date.Now.ToString & vbCrLf
                    logging(logmsg, logwriter)
                End Try
 
            End If
 
            If Answer = 7 Then
                'No   
            End If
 
            BegMoSeq = beginmonthseq
            EndMoSeq = endmonthseq
 
            ' WRITE A RECORD FOR ALL SHOPS FROM SHOPINFO WITH NULL AS VALUE FOR SCORES, RANK
            scPA.CommandText = "Insert Into MonthPresidentAwardResult Select 0, 0, ShopNumber, Null, Null, " & _
             "Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, 1750 From ShopInfo"
            strsqlselect = scPA.CommandText
            Dim selectCMD2 As SqlCommand = New SqlCommand(strsqlselect, mySqlConn)
            selectCMD2.CommandTimeout = 30
            custDA.SelectCommand = selectCMD2
 
            Try
                selectCMD2.ExecuteNonQuery()
                logmsg = " "
                logmsg = "     Inserted shopinfo records into table MonthPresidentAwardResult  " + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
            Catch ex As Exception
                errorflag = True
                logmsg = " "
                logmsg = "     Error in Inserting shopinfo records into table MonthPresidentAwardResult CMD2  " + ex.Message + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
            End Try
 
            selectCMD2.CommandType = CommandType.StoredProcedure
            If MgtAnalysis = "Y" Then
                selectCMD2.CommandText = "sp_Build_PresidentAward_Data_cosmic"
 
            Else
                selectCMD2.CommandText = "sp_Build_PresidentAward_Data"
            End If
 
 
            selectCMD2.Parameters.Add("@BegMoSeq", SqlDbType.Int)
            selectCMD2.Parameters("@BegMoSeq").Value = BegMoSeq
            selectCMD2.Parameters("@BegMoSeq").Direction = ParameterDirection.Input
            selectCMD2.Parameters.Add("@EndMoSeq", SqlDbType.Int)
            selectCMD2.Parameters("@EndMoSeq").Value = EndMoSeq
            selectCMD2.Parameters("@EndMoSeq").Direction = ParameterDirection.Input
 
            Try
                selectCMD2.ExecuteNonQuery()
                logmsg = " "
                If MgtAnalysis = "Y" Then
                    logmsg = "     Executed stored procedure sp_build_presidentaward_data_cosmic  " + Date.Now.ToString & vbCrLf
                Else
                    logmsg = "     Executed stored procedure sp_build_presidentaward_data  " + Date.Now.ToString & vbCrLf
                End If
                logging(logmsg, logwriter)
            Catch ex As Exception
                errorflag = True
                logmsg = " "
                logmsg = "     Error in Executing stored procedure sp_build_presidentaward_data  " + ex.Message + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
            End Try
 
            ' CALCULATE RANK FOR EACH CRITERIA
 
            selectCMD.CommandText = "Select * From PresidentAwardItem"
            sdrPA1 = selectCMD.ExecuteReader
            If sdrPA1.HasRows Then
                While sdrPA1.Read
                    PrcsCreatePreAwdItemRank(sdrPA1("PreAwdItem"), sdrPA1("ScoreColName"), sdrPA1("MoCntColName"), _
                    sdrPA1("RankColName"), sdrPA1("RankSeq"))
                End While
                sdrPA1.Close()
                'GET OVERALL RANKING
                PrcsCreateOverallRank()
            End If
        End Sub
 
Sub PrcsCreateOverallRank()
            Dim scRankData As New SqlCommand
            Dim scUpdResultTable As New SqlCommand
            Dim ShopNum, MoCnt, RankCnt1, RankCnt2 As Integer
            Dim Score, ScoreHolder As Double
            Dim sdrRankData As SqlDataReader
            Dim custDA As SqlDataAdapter = New SqlDataAdapter
            Dim mySqlConn2 As SqlConnection = New SqlConnection(connstrGRP)
            Dim mySqlConn9 As SqlConnection = New SqlConnection(connstrGRP)
            mySqlConn2.Open()
            mySqlConn9.Open()
 
            scUpdResultTable.CommandText = "Update MonthPresidentAwardResult Set RankAvg = " & _
            "([CSIRank] + [FOTCRank] + [CustRetentionRank] + [CustComplaintRank]) / 4 " & _
            "Where CSIRank Is Not Null and FOTCRank Is Not Null and " & _
            "CustRetentionRank Is Not Null and CustComplaintRank Is Not Null"
            Dim strsqlselect1 As String = scUpdResultTable.CommandText
            Dim selectCMD12 As SqlCommand = New SqlCommand(strsqlselect1, mySqlConn2)
            selectCMD12.CommandTimeout = 30
            custDA.SelectCommand = selectCMD12
            Try
                selectCMD12.ExecuteNonQuery()
 
                RankCnt1 = 1
                RankCnt2 = 0
                ScoreHolder = 10000000.0 'Pick a number which no score will equal to as start
 
                scRankData.CommandText = "Select ShopNum, RankAvg From MonthPresidentAwardResult " & _
                "Where RankAvg is not Null Order By RankAvg"
                strsqlselect1 = scRankData.CommandText
                Dim selectCMD13 As SqlCommand = New SqlCommand(strsqlselect1, mySqlConn2)
                selectCMD13.CommandTimeout = 30
                custDA.SelectCommand = selectCMD13
                Try
                    sdrRankData = selectCMD13.ExecuteReader
                    While sdrRankData.Read
                        If sdrRankData("RankAvg") = ScoreHolder Then
                            RankCnt2 += 1
                        Else
                            RankCnt1 += RankCnt2
                            RankCnt2 = 1
                        End If
 
                        scUpdResultTable.CommandText = "Update MonthPresidentAwardResult Set " & _
                        "OverallRank = " & RankCnt1 & ", QualifyForCompetition = 'Yes' " & _
                        "Where MonthPresidentAwardResult.ShopNum = " & sdrRankData("ShopNum")
                        strsqlselect1 = scUpdResultTable.CommandText
                        Dim selectCMD14 As SqlCommand = New SqlCommand(strsqlselect1, mySqlConn9)
                        selectCMD14.CommandTimeout = 30
                        custDA.SelectCommand = selectCMD14
                        Try
                            selectCMD14.ExecuteNonQuery()
                            ScoreHolder = sdrRankData("RankAvg")
                        Catch ex As Exception
                            errorflag = True
                            logmsg = " "
                            logmsg = "     Error in updating MonthPresidentAwardResultSet with overall rank CMD14  " + ex.Message + Date.Now.ToString & vbCrLf
                            logging(logmsg, logwriter)
                        End Try
 
                    End While
                    sdrRankData.Close()
                    logmsg = " "
                    logmsg = "     Successfully updated Overall Rank  " + Date.Now.ToString & vbCrLf
                    logging(logmsg, logwriter)
                Catch ex As Exception
                    errorflag = True
                    logmsg = " "
                    logmsg = "     Error in obtaining records from MonthPresidentAwardResult CMD 13 in PrcsCreateOverallRank  " + ex.Message + Date.Now.ToString & vbCrLf
                    logging(logmsg, logwriter)
                End Try
 
                scUpdResultTable.CommandText = "Update MonthPresidentAwardResult Set QualifyForCompetition = 'No' " & _
                "Where RankAvg Is Null"
                strsqlselect1 = scUpdResultTable.CommandText
                Dim selectCMD15 As SqlCommand = New SqlCommand(strsqlselect1, mySqlConn9)
                selectCMD15.CommandTimeout = 30
                custDA.SelectCommand = selectCMD15
                Try
                    selectCMD15.ExecuteNonQuery()
                    rankcalcdone = True                                                                                      'IT0801
                Catch ex As Exception
                    errorflag = True
                    logmsg = " "
                    logmsg = "     Error in updating MonthPresidentAwardResult set qualify for competition where rankavg is null CMD15 in PrcsCreateOverallRankroutine  " + ex.Message + Date.Now.ToString & vbCrLf
                    logging(logmsg, logwriter)
                End Try
            Catch ex As Exception
                errorflag = True
                logmsg = " "
                logmsg = "     Error in PrcsCreateOverallRankroutine CMD 12  " + ex.Message + Date.Now.ToString & vbCrLf
                logging(logmsg, logwriter)
 
            End Try
            mySqlConn2.Close()
            mySqlConn9.Close()
        End Sub

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-09-03 at 08:16:19ID24704856
Tags

Vb.Net Windows Application

Topics

.NET

,

Microsoft Visual Basic.Net

Participating Experts
4
Points
500
Comments
5

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. VB.net Ado.Net using views as sqlcommand
    instead of typing in the select statement i would like to draw in this sqlcommand right from an sql view please tell me how to do this.
  2. Reusing the SQLCommand in vb.net
    I am using the sqlcommand often to execute queries on the SQL Server from my vb.net program. The problem I am having is that I have to keep retyping my commands. See below. Rather then redimming my commmands everytime is there a way to reuse them for ex. I want to reuse th...
  3. SqlCommand parameters Delphi 2005
    Hi, I cannot work out how to assign parameters to the SqlCommand component in Delphi 2005(using Delphi.Net). I am trying to use the code below. Which takes the values from two text boxes on my webform. But when the last line executes it comes up with an error -> Incorrec...
  4. SQLCommand, SQLConnetion, SQLReader, or SQLAda…
    Using the Banana tables below, draft vb.net syntax in the code behind event of FetchRecord to return the BananaID where banana name is "plantain." The goal is to return the record as fast as possible using the optimized SQL syntax. Use any of the following:    - SQ...
  5. SqlCommand - Loop SqlParameters
    In VB.NET, when you are about to execute a SqlCommand to a Stored Proceedure, you have to prepare all of the parameter values with As new SqlParameter, ie. Dim pValuename As New SqlParameter("@inputvalue", SqlDbType.VarChar, 20, ParameterDirection.Input) Then you ...
  6. sqlcommand to table or array help
    I can do a sqlcommand in vb.net, and then use a reader to get the results out. But how would I do these: 1. assign the results to a table in memory 2. count the number of results, redim an array, fill the array Here is my code so far. The reader is nice if you are just prin...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: daryalPosted on 2009-09-03 at 08:34:05ID: 25251760

You have two basic options;

First; create just one mySqlConn object (for example at line 9) and initialize it at page load(Form1_Load). When executing queries, check whether it is open, and if not just open the connection.

Second; you can create a static mySqlConn object, by this way you can use it everywhere in the application. Just write get/set methods to this object, and do not forget to check whether connection is open in the get method.

 

by: johnnyg123Posted on 2009-09-03 at 08:44:01ID: 25251864

Can you please provide more details for both options?

Thanks

 

by: ladarlingPosted on 2009-09-03 at 08:58:53ID: 25252003

The connection part is straight forward, but I would caution against reusing command objects since if you forget to update the command text you can potentially make unwanted changes to the DB. It can be done, however, just as with the connection object.

Make the following changes, and remove the connection declarations from the subs, using mySQLConnection in their place:

...
 Dim beginmonthseq, endmonthseq As Integer
 Dim rankcalcdone As Boolean   'IT0801
 Dim mySqlConn As SqlConnection '<< Declare Connection Here
 
 
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '********************************************************************************
            '***       Create/Write Log File Name                                         ***                                                                     
            '********************************************************************************
            Dim processerror As Boolean
 
            errorflag = False
            processerror = False
            rankcalcdone = False                                 'IT0801
            ' Get application config parameters
            Try
                logfilepath = System.Configuration.ConfigurationSettings.AppSettings("logfilepath").ToString
                datafilepath = System.Configuration.ConfigurationSettings.AppSettings("Datafilepath").ToString
                errorfilepath = System.Configuration.ConfigurationSettings.AppSettings("errorfilepath").ToString
                connstrGRP = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString.connstrGRP").ToString()
                 mySqlConn = New SqlConnection(connstrGRP) '<< Initialize the connection here
                 mySqlConn.Open()
 
 
...

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:

Select allOpen in new window

 

by: BusacPosted on 2009-09-03 at 11:46:43ID: 25253654

I'd like to add that since the connections are pooled, there is no real performance loss for creating many identical database connections.

Also trying to reuse the commands won't give you much performance gain either -- it's just a couple of instantiations but no network / data activity so you're really just saving a couple of CPU cycles.

 

by: badgerfirePosted on 2009-09-03 at 13:27:30ID: 25254609

I had this same problem only with a web app when I was converting an asp classic site to a asp.net.

My problem occurred when I would use the SQLDataAdapter.

It was constantly creating connection and never closing them.  This did degrade performance.

The following code is a snippet.  In it you can see I use a Session variable but in an executable you can easily swap a global variable.  At the end of my update I be sure to close the connection.  I built all my database functions into classes for ease of edit and organization.

        public void ManageWBS(
                Int32 iSKWBS,
                Int32 iFKProject,
                String sWBS,
                String sWBSTitle)
        {
            SqlConnection conn = new SqlConnection(Session["ConnectionString"].ToString().ToString());
 
            String sqlout = "procManageWBS";
            SqlCommand cmd = new SqlCommand(sqlout, conn);
            cmd.CommandType = CommandType.StoredProcedure;
 
            cmd.Parameters.AddWithValue("@SKWBS", iSKWBS);
            cmd.Parameters.AddWithValue("@FkProject", iFKProject);
            cmd.Parameters.AddWithValue("@WBS", sWBS);
            cmd.Parameters.AddWithValue("@WBSTitle", sWBSTitle);
 
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
            cmd.Connection.Close();
        }
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

Select allOpen in new window

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...