aj_blk
aj_blk

Reputation: 1

how to create a general java program to update only the fields that is changed in mysql

i have a table that contains address of users AddressTable(country,state,city,pincode,phonenumber) which contains value (USA,NY,Bronx,512345,1123456)

When a user edits a new value for 1 field or all fields, how to create a java program which can update only the values that have been edited.

i dont want to read the previous values using select and reinsert them back to places where the new values have not been edited.

how to do this with a single update query like given below

void editAddress(String country,String state,String city,String pincode,String phonenumber)
{
 PreparedStatement ps = con.prepareStatement("UPDATE AddressTable set country=?,set state=?,set city=?,set pincode=? ,set phonenumber=? WHERE user=(?)") ;
 ps.setString(1, country);
 ps.setString(2, state);
 ps.setString(3, city);
 ps.setString(4, pincode);
 ps.setString(5, phonenumber);
 ps.setString(6, user);             
 ps.executeUpdate();
}

Upvotes: 0

Views: 537

Answers (4)

aj_blk
aj_blk

Reputation: 1

UPDATE AddressTable set country=IFNULL(?,country),state=IFNULL(?,state),city=IFNULL(?,city),pincode=IFNULL(?,pincode) ,phonenumber=IFNULL(?,phonenumber) WHERE user=(?)

The value of the field wont change if the value to be replaced is NULL with this query

Upvotes: 0

seeker
seeker

Reputation: 6991

Like matesuz said , just set the field as not null on the client side. And your good to go!

Upvotes: 0

Shivan Dragon
Shivan Dragon

Reputation: 15219

You could make a bean that hold the current and previous value for each field, and then make a cross cutting logic (like an AspectJ advice) that saves/updates a modified value only when it's different from the old one

Upvotes: 0

mateusz.fiolka
mateusz.fiolka

Reputation: 3100

You could copy the values to a simple POJO class, and then when saving edited values compare them with original ones.

Or you could use and ORM (object relational mapper) like Hibernate which should do it automatically.

Upvotes: 1

Related Questions