This week's book giveaway is in the Android forum.
We're giving away four copies of Learning Java by Building Android Games and have Jean-Marcel Belmont on-line!
See this thread for details.
Win a copy of Learning Java by Building Android Games this week in the Android forum!

Mark Oneill

Greenhorn
+ Follow
since Feb 08, 2018
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
1
Received in last 30 days
0
Total given
2
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Mark Oneill

Hmm, I've tried adding the line e.printStackTrace(); into my exception handling, and the IDE (NetBeans 8.2) gives me the message "Throwable.printStackTrace() should be removed" ?
8 months ago
Thanks for the advice Paul - I will amend my exceptions with that! :-)
8 months ago


Am I right to believe that the rs.close() statement before the return statement is redundant? As the finally block is always executed and therefore rs.close() is called twice depending on the result set?
8 months ago

Dave Tolls wrote:You could cut down the number of db accesses there.
Just get the PlayerUID for the given AreaID.
If it matches then exit, if not then do the Friends query.
That middle SELECT is a bit unnecessary.
Indeed, you might be able to come up with a single query, but not knowing the logic I can't say.

In addition I would recommend reading up on PreparedStatements.
Seeing concatenated queries like that makes me itchy.


Oh yes, and your ResultSet should be closed off in a finally block (or use a try-with-resources).
At the moment, if you get an exception inside there you may end up leaking resources as the ResultSet(s) won't be closed.





Thank you for your post Dave. This is my first "real world" attempt at writing any Java / SQL commands since my Uni days (almost 10 years ago now). Indeed I can now see that the middle query is completely redundant! And as there are 30 odd of these events listeners, and potentially dozens of people calling them on a regular basis the removal of that query alone will make a lot of difference! I thank you again for pointing this out! :-)

Also, I had not heard about Prepared Statements - looks really useful. I will en-devour to upgrade my code to use these! 





8 months ago
Hi guys! Thought I would share how I fixed this (in case anyone else stumbles upon this looking for an answer to their same problem).

It turns out that by using the same ResultSet object (in my case rs) for multiple queries caused these kind of errors.

Each query needs its OWN ResultSet object.

I now use use the approach 1st result set is rs, second is rs2, third rs3 etc.

Since doing this I've not had any problems!

8 months ago
Greetings everyone!

Over the past few weeks I've been writing a plugin for a game. The developers have released a API with event calls that you can build on. My plugin was going fine and on my test server it works as expected. But, when I upload the plugin onto my server which hosts the game after 10-15 minutes I get a crash (due to I expect more people calling these events).

The first crash caused:



So I though it was because I had not wrapped my SQLite commands with try catch statements. So I did this, and after some time on the server, with more people joining and doing stuff (causing these events to be called) I got another crash but this time it was (with my newly wrapped SQL statements:





Here is an example of one of my event methods with the SQLite statement in:







Can anyone see what I'm doing wrong here?
8 months ago
Thank you very much for your help Dave Tolls I will add a bunch of System.out.println() calls and see if I can see whats going on and where it's breaking!

Have a fantastic weekend!
9 months ago
Doubles and Integers are fundamental data types you cant just interchange between the two, as you will loose data!

But you can cast them if you are happy with loosing precision.

Like:

double d = 1.2;

int i = (Integer) d;

9 months ago

Dave Tolls wrote:Sorry, it's me being a bit dim.
The deserialisation skips normal object creation, so that instantiation of the List doesn't happen.



Ahh I did not know that! Thank you so much for spreading the knowledge

So if I create a method something like:



And then call this method in the "blank" constructor



That should stop my NullPointerExceptions?
9 months ago
Apologies for my dumbness I haven't coded in almost 10 years!
9 months ago


I thought I had initialised the ArrayList? :/
9 months ago
Thanks for the replies guys - a great community here. And I am glad to see the site is still up and running - I used to visit here often in Java 1.2 days ;) and have recently started to get back into programming. . .

I am saving each players data to an individual player binary file using



I'm then reading in the file again at a later date using





Within the Player class (version 2) I have a ArrayList with a method addToChatLog(String input) {array_list.add(input;}

It was when I called this method from a version 1 Player that I got the NullPointerException.

I suspect I may be doing something fundamentally wrong :/



9 months ago
The methods shown were just to illustrate. So it's not about optional attributes. The Player class is work in progress and things will be added to it over a period of time. Version 1, Version 2, Version 3, etc. With each new version new getter and setter methods will be added.

I was thinking about setting the serialVersionUID for each version to something different so I could identify if the object was an "old" one or not.

I suppose I will have to load the old object, check the serialVersionUID, pull out the getter methods return values, store them in temporary attributes and then reload them into a new object.

I was just hoping there was an easier/simpler way to do it than this.
9 months ago