简体   繁体   中英

Java database application

Can someone help me with this: I'm making a java database application and I want to put my methods for select,insert,update and delete into separated class so they can be called from another classes and reused. Till now I managed to separate only methods for update and delete and for insert when not using prepared statement. Problem I'm encountering is how to return data's when doing select from database and put them into table.

Here are my update and delete method's in Queries class:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.Konekcija.Konekcija;

public class Queries {
Konekcija konekcija = new Konekcija();

public void updateTable(String sqlQuery){
    Connection conn = null;
    Statement st = null;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = konekcija.getConn();
        st = conn.createStatement();
        st.executeUpdate(sqlQuery);

    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

public void deleteFromTable(String sqlQuery){
    Connection conn = null;
    Statement st = null;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = konekcija.getConn();
        st = conn.createStatement();
        st.executeUpdate(sqlQuery);
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

PS Connection properties are in another class "Konekcija"

You should create a collection and populate it with the results of the query, it should look something like:

List<Foo> selectFoos(Connection connection) throws SQLException {
    PreparedStatement ps = connection.prepareStatement("select * from foo");
    try {
        ResultSet resultSet = ps.executeQuery();
        try {
            List<Foo> foos = new ArrayList<Foo>();
            while (resultSet.next()) {
                Foo foo = new Foo();
                // use resultSet methods get... to retrieve data from current row of results
                // and populate foo
                foos.add(foo);
            }
        } finally {
            resultSet.close();
        }
    } finally {
        ps.close();
    }
    return foos;
}

Return data for "select from table" would be ResultSet .

  1. You may return the ResultSet to caller and get values (or)
  2. Inside the "Select" method of Queries class retrieve the data from resultset and set it some VO object and add this VO to collection and return the collection (assuming you will get more than one row in ResultSet ). For example if you are querying User table, create Java bean class "User" with get/set methods. Set retrieved values to this bean and return it. //Create User class with get/set in some package.

     Class.forName("com.mysql.jdbc.Driver"); conn = konekcija.getConn(); st = conn.createStatement(); ResultSet rs=st.execute(sqlQuery); //Instantiate user class while (rs.next()) System.out.println("Name= " + rs.getString("moviename") + " Date= " + String fName = rs.getString("firstName"); 

    User myUser = new User(); myUser.setFirstName(fName); }

    NOTE: This code is hand typed. There may be syntax errors. Please use it as starting point.

try executeQuery method. in the java doc for "resultset" class you will find a example:

http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM