473,320 Members | 1,900 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

Few basic questions related to servlets

157 100+
Helo experts,

I'm working on my first ever web application and I have some basic questions related to servlets if I may,

I have 5-6 Java statements and preparedstatements in my servlet to execute a number of MySQL queries for different tables, do I need to open a new connection to the database for each query or can I just create one connection and use it for all the queries?

Also, if I'm using a preparedstatement and resultset for a particular query, then after closing them both can I again reuse them for another query in the same piece of code or is it better to create a new statement/preparedstatement object for every different query and close all the resultsets and statements etc in the end of the doGet()/doPost() method?

I've been told to not declare a preparedstatement or a statement as global since that has something to do with multithreading, hence I create and use them in the doPost() or doGet(). What is the reason behind not declaring them as global if that program is going to be accessed by multiple users? Is it because the global copy will be shared by all or something else?

Does opening multiple connections on a database in the same program and using many statements/preparedstatements affect the performance in any way?

Why is it a good practice to close all the opened connections in destroy()? Will they still remain open even if the user closes the browser window(webpage) to which this servlet is linked?
Feb 19 '07 #1
14 2025
r035198x
13,262 8TB
Naturally the nature of these questions may require you to read a text. Even then you'll find whole books devoted to these things so whatever responses we are going to give here will not be complete.

I have 5-6 Java statements and preparedstatements in my servlet to execute a number of MySQL queries for different tables, do I need to open a new connection to the database for each query or can I just create one connection and use it for all the queries?
You do not need to open a connection for each statement. Just use one connection

Also, if I'm using a preparedstatement and resultset for a particular query, then after closing them both can I again reuse them for another query in the same piece of code or is it better to create a new statement/preparedstatement object for every different query and close all the resultsets and statements etc in the end of the doGet()/doPost() method?
Create a prepared statement for each different query. You cannot create more than one resultsets. You can only have one resultset so you have to reuse that resultset.

Does opening multiple connections on a database in the same program and using many statements/preparedstatements affect the performance in any way?
Naturally perfomance is reduced when multiple connections are open. The extent of the effects depend on the database being used and in some cases the OS. Using many statements has just about as much effect as having more String declarations in a program. It is the connection to the database and the queries that are really of effect.

Why is it a good practice to close all the opened connections in destroy()? Will they still remain open even if the user closes the browser window(webpage) to which this servlet is linked?
Closing a page linked to a servlet does not do anything to the servlet unless the page submits on close. Destroy is called when the application is being stopped or when the server is stopped so the connections are closed on application exit rather than on page exit because we can have some other pages that might still be open and may want to connect to the database. If we had closed the connections on closing one of the pages, then we would have to create another connection everytime which is not efficient.
Feb 20 '07 #2
abctech
157 100+
Thank you so much for your detailed response r035198x , it clears a lot of my doubts.

One thing though, you mentioned
Create a prepared statement for each different query. You cannot create more than one resultsets. You can only have one resultset so you have to reuse that resultset..
I dint quite understand this part, I'm posting a few lines of my program.Can you please tell me if I'm using the ResultSet in the right way?

[Please note that this is just how my code looks in general, I couldn't post the original code due to some work policies]

Expand|Select|Wrap|Line Numbers
  1. doPost()
  2. {
  3.    try
  4.    {
  5.        String save = null;
  6.        save = request.getParameter("Save"); 
  7.  
  8.        String update = null;
  9.        update = request.getParameter("Update"); 
  10.  
  11.        String delete = null;
  12.        delete = request.getParameter("Delete"); 
  13.  
  14.        PreparedStatement pst = con.prepareStatement(selectBrID);
  15.        pst.setString(1,a);
  16.        ResultSet rs = pst.executeQuery();
  17.  
  18.        while(rs.next())
  19.        {
  20.     //some code 
  21.        }
  22.        rs.close();
  23.        pst.close();
  24.  
  25.        if(save.equals(“Save”))//if user hits 'Save' on page execute this 'if'.
  26.        {
  27.           PreparedStatement pst1 = con.prepareStatement(selectName);
  28.           pst1.setString(1,Name);
  29.           ResultSet rs1 = pst1.executeQuery();
  30.  
  31.           PreparedStatement pst2 = con.prepareStatement(selectUsername);
  32.           pst2.setString(1,Username);
  33.           ResultSet rs2 = pst2.executeQuery();
  34.  
  35.           if(rs1.next() != rs1.isLast())
  36.           {
  37.             pw.println(“This Name already exists”);  
  38.           }
  39.           else if(rs2.next() != rs2.isLast())
  40.           {
  41.            pw.println(“This Username already exists”);
  42.           }
  43.           else
  44.           {
  45.            PreparedStatement pst3 = con.prepareStatement(insertStr);
  46.            pst3.setString(1,Name);
  47.            pst3.setString(2,Username);
  48.            pst3.executeUpdate();    
  49.           }
  50.           rs1.close();
  51.           pst1.close();
  52.           rs2.close();
  53.           pst2.close();
  54.           pst3.close();
  55.  
  56.       }//’Save’ over
  57.  
  58.       if(update.equals(“Update”))//if user hits 'Update' on page execute this 'if'.  
  59.       {
  60.          //some PreparedStatements and ResultSets 
  61.          if()
  62.          {
  63.             //Again some PreparedStatements and ResultSets 
  64.          }
  65.          else if()
  66.          {
  67.            //Again some PreparedStatements and ResultSets  
  68.          }
  69.          else
  70.          {
  71.             PreparedStatement pst5 = con.prepareStatement(updateStr);
  72.             pst5.setString(1,Name);
  73.             pst5.setString(2,Username);
  74.             pst5.executeUpdate();        
  75.          }
  76.          //closing all the resultsets and pst’s.
  77.       }//’Update’ over
  78.  
  79.       if(delete.equals(“Delete”))//if user hits 'Delete' on page execute this 'if'.
  80.       {
  81.          PreparedStatement pst6 = con.prepareStatement(deleteStr);
  82.          pst6.setLong(1,UID);
  83.          pst6.executeUpdate();    
  84.          pst6.close();
  85.       }//’Delete’ over
  86.    }
  87.    catch(Exception e)
  88.    {
  89.        System.out.println(e);
  90.    }
  91.  }//doPost() over
The a, Name, Username strings are coming from the webpage. And depending on what button the user has clicked(Save/Delete/Update) the control goes into the appropriate 'if' and executes the queries there. I have created and used just one Connection(con) as you suggested but can I reuse the Prepared statements again since at one time the control shall enter & execute just one of the 3 main-if's.

And what about the Result sets, I'm creating a different one for every PreparedStatement, is it incorrect? Can you please tell me a little about how a Result set works?
Feb 22 '07 #3
r035198x
13,262 8TB
Thank you so much for your detailed response r035198x , it clears a lot of my doubts.

One thing though, you mentioned

I dint quite understand this part, I'm posting a few lines of my program.Can you please tell me if I'm using the ResultSet in the right way?

[Please note that this is just how my code looks in general, I couldn't post the original code due to some work policies]

Expand|Select|Wrap|Line Numbers
  1. doPost()
  2. {
  3. try
  4. {
  5. String save = null;
  6. save = request.getParameter("Save"); 
  7.  
  8. String update = null;
  9. update = request.getParameter("Update"); 
  10.  
  11. String delete = null;
  12. delete = request.getParameter("Delete"); 
  13.  
  14. PreparedStatement pst = con.prepareStatement(selectBrID);
  15. pst.setString(1,a);
  16. ResultSet rs = pst.executeQuery();
  17.  
  18. while(rs.next())
  19. {
  20.     //some code 
  21. }
  22. rs.close();
  23. pst.close();
  24.  
  25. if(save.equals(“Save”))//if user hits 'Save' on page execute this 'if'.
  26. {
  27. PreparedStatement pst1 = con.prepareStatement(selectName);
  28. pst1.setString(1,Name);
  29. ResultSet rs1 = pst1.executeQuery();
  30.  
  31. PreparedStatement pst2 = con.prepareStatement(selectUsername);
  32. pst2.setString(1,Username);
  33. ResultSet rs2 = pst2.executeQuery();
  34.  
  35. if(rs1.next() != rs1.isLast())
  36. {
  37. pw.println(“This Name already exists”); 
  38. }
  39. else if(rs2.next() != rs2.isLast())
  40. {
  41. pw.println(“This Username already exists”);
  42. }
  43. else
  44. {
  45. PreparedStatement pst3 = con.prepareStatement(insertStr);
  46. pst3.setString(1,Name);
  47. pst3.setString(2,Username);
  48. pst3.executeUpdate();    
  49. }
  50. rs1.close();
  51. pst1.close();
  52. rs2.close();
  53. pst2.close();
  54. pst3.close();
  55.  
  56. }//’Save’ over
  57.  
  58. if(update.equals(“Update”))//if user hits 'Update' on page execute this 'if'. 
  59. {
  60. //some PreparedStatements and ResultSets 
  61. if()
  62. {
  63. //Again some PreparedStatements and ResultSets 
  64. }
  65. else if()
  66. {
  67. //Again some PreparedStatements and ResultSets 
  68. }
  69. else
  70. {
  71. PreparedStatement pst5 = con.prepareStatement(updateStr);
  72. pst5.setString(1,Name);
  73. pst5.setString(2,Username);
  74. pst5.executeUpdate();        
  75. }
  76. //closing all the resultsets and pst’s.
  77. }//’Update’ over
  78.  
  79. if(delete.equals(“Delete”))//if user hits 'Delete' on page execute this 'if'.
  80. {
  81. PreparedStatement pst6 = con.prepareStatement(deleteStr);
  82. pst6.setLong(1,UID);
  83. pst6.executeUpdate();    
  84. pst6.close();
  85. }//’Delete’ over
  86. }
  87. catch(Exception e)
  88. {
  89. System.out.println(e);
  90. }
  91. }//doPost() over
The a, Name, Username strings are coming from the webpage. And depending on what button the user has clicked(Save/Delete/Update) the control goes into the appropriate 'if' and executes the queries there. I have created and used just one Connection(con) as you suggested but can I reuse the Prepared statements again since at one time the control shall enter & execute just one of the 3 main-if's.

And what about the Result sets, I'm creating a different one for every PreparedStatement, is it incorrect? Can you please tell me a little about how a Result set works?
This way should probably work. What I meant was you cannot open two resultsets at the same time. But better is declaring one resultset object before the try and intitializing it to null, then instantiate it differently for each of the if statements so that you use only one resultset variable.

You should close your connections and resultsets in the finally close so you are guaranteed they will be closed

May I say also that
Expand|Select|Wrap|Line Numbers
  1.  String save = null; 
  2. save = request.getParameter("Save"); 
  3.  
  4.  
is the same as

Expand|Select|Wrap|Line Numbers
  1.  String save = request.getParameter("Save"); 
Feb 22 '07 #4
abctech
157 100+
Thanks for all your suggestions, I incorporated them and its working perfectly.

Earlier I was getting a lot of null pointer exceptions and I couldn't locate them hence I explicitly declared all objects as null ,thats why I was saying
Expand|Select|Wrap|Line Numbers
  1. String save = null; 
  2. save = request.getParameter("Save"); 
I've made it String save = request.getParameter("Save"); now.Thanks.

you cannot open two resultsets at the same time
Can't open two resultset objects on the same table or any two resultset objects at one time?

I have some nested loops in which I need to fire some queries on multiple tables thus opening multiple resultsets, i.e something as foll -
Expand|Select|Wrap|Line Numbers
  1. if (s1.equals("something"))
  2. {                    
  3.     for (int j=0;j<s16.length;j++)
  4.     {
  5.     PreparedStatement pst1 = con.prepareStatement(selectStr);
  6.     pst1.setString(1,Name);
  7.     ResultSet rs1 = pst1.executeQuery();
  8.     while (rs1.next())
  9.     {
  10.                      long a = rs1.getLong(1);
  11.                      int b = rs11.getInt(2);
  12.  
  13.                      PreparedStatement pst2 =con.prepareStatement(select1Str);
  14.                      pst2.setLong(1,a);
  15.                      pst2.setInt(2,b);
  16.                      ResultSet rs2  = pst2.executeQuery();
  17.                      while(rs2.next())
  18.                      {    
  19.                           //some code
  20.                      }    
  21.     }
  22.    }                        
  23. }//if over    
Will opening rs1 and rs2 on the same/different table at the same time create any discrepancies in the output?

Also can I declare the PreparedStatement too outside the try-block and intialize it to null and then reuse the same in each of my 3 main-if's just like you'd suggested regarding the result sets?
Feb 22 '07 #5
r035198x
13,262 8TB
Thanks for all your suggestions, I incorporated them and its working perfectly.

Earlier I was getting a lot of null pointer exceptions and I couldn't locate them hence I explicitly declared all objects as null ,thats why I was saying
Expand|Select|Wrap|Line Numbers
  1. String save = null; 
  2. save = request.getParameter("Save"); 
I've made it String save = request.getParameter("Save"); now.Thanks.


Can't open two resultset objects on the same table or any two resultset objects at one time?

I have some nested loops in which I need to fire some queries on multiple tables thus opening multiple resultsets, i.e something as foll -
Expand|Select|Wrap|Line Numbers
  1. if (s1.equals("something"))
  2. {                    
  3. for (int j=0;j<s16.length;j++)
  4. {
  5.     PreparedStatement pst1 = con.prepareStatement(selectStr);
  6.     pst1.setString(1,Name);
  7.     ResultSet rs1 = pst1.executeQuery();
  8.     while (rs1.next())
  9.     {
  10. long a = rs1.getLong(1);
  11. int b = rs11.getInt(2);
  12.  
  13. PreparedStatement pst2 =con.prepareStatement(select1Str);
  14. pst2.setLong(1,a);
  15. pst2.setInt(2,b);
  16. ResultSet rs2 = pst2.executeQuery();
  17. while(rs2.next())
  18. {    
  19. //some code
  20. }    
  21.     }
  22. }                        
  23. }//if over    
Will opening rs1 and rs2 on the same/different table at the same time create any discrepancies in the output?

Also can I declare the PreparedStatement too outside the try-block and intialize it to null and then reuse the same in each of my 3 main-if's just like you'd suggested regarding the result sets?
That will probably not work. You will get something like IllegalStateException. Are you not able to change your design so that you have only one resulset open at a time?
Feb 22 '07 #6
abctech
157 100+
Are you not able to change your design so that you have only one resulset open at a time?
Well, I don’t really understand how I can work around my code to avoid opening more than one resultsets at a time since as you can see in my previous post based on every single record of rs1 the query is fired and a fresh rs2 is obtained every time, then one by one the records of rs2 are retrieved and processed.

Just so you know rs1 is representing a different table and rs2 a different one, will using them in the above way still be incorrect?

Another portion of my program requires opening 2 resultsets on the same table at the same time, it’s like this:-

Expand|Select|Wrap|Line Numbers
  1. String selectNameStr = “Select * from abc where Name = ?;” ;
  2. String selectUsernameStr = “Select * from abc where Username = ?;” ;
  3.  
  4. PreparedStatement pst1 = con.prepareStatement(selectNameStr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
  5. pst1.setString(1,FullName);
  6. ResultSet rs1 = pst1.executeQuery();
  7.  
  8. PreparedStatement pst2 = con.prepareStatement(selectUsernameStr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);                    
  9. pst2.setString(1,Username);    
  10. ResultSet rs2  = pst2.executeQuery();
  11.  
  12. if (rs1.next() != rs1.isLast()) 
  13. {
  14.      //some code
  15. }
  16. else if (rs2.next() != rs2.isLast())
  17. {
  18.       //some code
  19. }
  20. else
  21. {
  22.       PreparedStatement pst3 = con.prepareStatement(updateStatementStr);
  23.       // some code and some more queries on table ‘abc’ .
  24. }
Will this code too give erroneous output since again rs1 and rs2 etc are fetching records from the same table ‘abc’ at one time?

My program is incomplete and very vast and I still have to compile it, but I want to take care that I approach it in the correct manner so that later I don’t have to spend too much time rectifying it. All your assistance much appreciated r035198x.
Feb 22 '07 #7
r035198x
13,262 8TB
Well, I don’t really understand how I can work around my code to avoid opening more than one resultsets at a time since as you can see in my previous post based on every single record of rs1 the query is fired and a fresh rs2 is obtained every time, then one by one the records of rs2 are retrieved and processed.

Just so you know rs1 is representing a different table and rs2 a different one, will using them in the above way still be incorrect?

Another portion of my program requires opening 2 resultsets on the same table at the same time, it’s like this:-

Expand|Select|Wrap|Line Numbers
  1. String selectNameStr = “Select * from abc where Name = ?;” ;
  2. String selectUsernameStr = “Select * from abc where Username = ?;” ;
  3.  
  4. PreparedStatement pst1 = con.prepareStatement(selectNameStr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
  5. pst1.setString(1,FullName);
  6. ResultSet rs1 = pst1.executeQuery();
  7.  
  8. PreparedStatement pst2 = con.prepareStatement(selectUsernameStr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);                    
  9. pst2.setString(1,Username);    
  10. ResultSet rs2 = pst2.executeQuery();
  11.  
  12. if (rs1.next() != rs1.isLast()) 
  13. {
  14. //some code
  15. }
  16. else if (rs2.next() != rs2.isLast())
  17. {
  18. //some code
  19. }
  20. else
  21. {
  22. PreparedStatement pst3 = con.prepareStatement(updateStatementStr);
  23. // some code and some more queries on table ‘abc’ .
  24. }
Will this code too give erroneous output since again rs1 and rs2 etc are fetching records from the same table ‘abc’ at one time?

My program is incomplete and very vast and I still have to compile it, but I want to take care that I approach it in the correct manner so that later I don’t have to spend too much time rectifying it. All your assistance much appreciated r035198x.
You better create arraylists to hold the data temporarily because opening two resultsets at the same time will not work It does not matter if they have data from different tables.
Feb 22 '07 #8
abctech
157 100+
You better create arraylists to hold the data temporarily because opening two resultsets at the same time will not work It does not matter if they have data from different tables.
Okay,
I will do that then.Thanks a lot for all your inputs !!!
Feb 22 '07 #9
r035198x
13,262 8TB
Okay,
I will do that then.Thanks a lot for all your inputs !!!
Would be easier if you have classes for each of the tables you are getting data from, then you can retrieve the data into objects of that class and strore the objects themselves in the arraylist.
Feb 22 '07 #10
abctech
157 100+
Would be easier if you have classes for each of the tables you are getting data from, then you can retrieve the data into objects of that class and strore the objects themselves in the arraylist.
That’s a very good suggestion and a structured way of doing things,Thanks.

So it’s basically like creating objects that are replicas of the tables and using them instead of the resultsets. That means every field that I’m retrieving from the backend I’m storing it as data in the respective table class’s object.

Now I have never used an ArrayList before therefore I have a few questions though, how do I use these table-objects like I did resultsets? I certainly don’t get the methods of ResultSet and resultsets are scrollable and updatable and reflect the changes made in the backend.How do I work around these things using my table class’s objects? If you could post a demo or an example or direct me to a link demonstrating this that would be very helpful.

Another thing, I just compiled the code with the multiple resultsets on the same table, its not giving an exception as we were expecting and so far fetching the records properly, do I still make use of ArrayList? Would that be more efficient? Please guide.
Feb 22 '07 #11
r035198x
13,262 8TB
That’s a very good suggestion and a structured way of doing things,Thanks.

So it’s basically like creating objects that are replicas of the tables and using them instead of the resultsets. That means every field that I’m retrieving from the backend I’m storing it as data in the respective table class’s object.

Now I have never used an ArrayList before therefore I have a few questions though, how do I use these table-objects like I did resultsets? I certainly don’t get the methods of ResultSet and resultsets are scrollable and updatable and reflect the changes made in the backend.How do I work around these things using my table class’s objects? If you could post a demo or an example or direct me to a link demonstrating this that would be very helpful.

Another thing, I just compiled the code with the multiple resultsets on the same table, its not giving an exception as we were expecting and so far fetching the records properly, do I still make use of ArrayList? Would that be more efficient? Please guide.

I've just checked the docs again. It seems my jdbc is getting old here


By default, only one Resultest object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.

So what you have should work as long as all Resultsets are created from different statement objects.
Feb 23 '07 #12
abctech
157 100+
I've just checked the docs again. It seems my jdbc is getting old here


By default, only one Resultest object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.

So what you have should work as long as all Resultsets are created from different statement objects.
Okie dokie, its all coming together now. By the way I was just referring the jdbc docs , tried to read more on result sets there, couldn't locate the stuff you've specified above, can you please provide me the link to the appropriate page?
Feb 23 '07 #13
r035198x
13,262 8TB
Okie dokie, its all coming together now. By the way I was just referring the jdbc docs , tried to read more on result sets there, couldn't locate the stuff you've specified above, can you please provide me the link to the appropriate page?
http://java.sun.com/j2se/1.4.2/docs/...Statement.html
Feb 23 '07 #14
abctech
157 100+
http://java.sun.com/j2se/1.4.2/docs/...Statement.html
Thank you so much, clears most of my doubts on using result sets now.
Feb 23 '07 #15

Sign in to post your reply or Sign up for a free account.

Similar topics

3
by: Jose Munoz | last post by:
Hi all, I want to share some data for all my applications (servlets and jsps). For this i am using a JSP to set the variables with scope=application. When i get this data from some JSP all is o.k,...
2
by: Steven O. | last post by:
First, this may not be the correct newsgroup. I have some relatively basic questions on SQL. I tried to find a newsgroup that was specifically just about SQL, and was surprised to find that all...
4
by: Ramesh | last post by:
hi, Let me ask some basic questions. Can anybody explain me about the following questions: 1. When we have to create sn key? Whenever we compiled Component we have to create or it is a one time...
18
by: Frances | last post by:
I want to learn PHP.. I know JSP, Servlets, have been using Tomcat for 2 years now, and even though I know there are ways you can use PHP in conjunction with Tomcat, I'd rather not tinker with...
0
by: connectrajesh | last post by:
INTERVIEWINFO.NET http://www.interviewinfo.net FREE WEB SITE AND SERVICE FOR JOB SEEKERS /FRESH GRADUATES NO ADVERTISEMENT
3
by: Bit Byte | last post by:
I have written a custom servlet engine (and "wrapper" servlets) for some legacy code (C/C++) that I have. The servlets contain the bulk of my 1st 2 layers in a 3 tier architecture - i.e. data...
2
by: midhunkreddy | last post by:
Hi this is midhun i am in development,i want to know how to call the servlets using visual basic please post the answers
0
by: ank99 | last post by:
hello...i m trying to run servlets(using GET) from wml page..... using apache tomcat 5.5 server and WinWap for Windows(version 3.2.1.28.)....its working fine as far as just to display wml form...
1
by: ank99 | last post by:
hello...i m trying to run servlets(using GET) from wml page..... web server : apache tomcat 5.5 server WAP Browser: WinWap for Windows(version 3.2.1.28.).... its working fine as far as just to...
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.