0

有人可以帮我解决这个问题:我正在制作一个 java 数据库应用程序,我想将我的选择、插入、更新和删除方法放入单独的类中,以便可以从另一个类中调用它们并重用它们。到目前为止,我设法在不使用准备好的语句时仅分离更新和删除方法以及插入方法。我遇到的问题是如何从数据库中选择返回数据并将它们放入表中。

这是我在查询类中的更新和删除方法:

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 连接属性在另一个类“Konekcija”中

4

3 回答 3

1

您应该创建一个集合并使用查询结果填充它,它应该类似于:

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;
}
于 2012-07-23T21:31:38.777 回答
0

“从表中选择”的返回数据将是ResultSet

  1. 您可以将 ResultSet 返回给调用者并获取值(或)
  2. 在 Queries 类的“Select”方法中,从结果集中检索数据并将其设置为一些 VO 对象,然后将此 VO 添加到集合并返回集合(假设您将在ResultSet中获得多行)。例如,如果您正在查询用户表,请使用 get/set 方法创建 Java bean 类“用户”。将检索到的值设置为此 bean 并返回它。//在某个包中使用get/set创建用户类。

    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");
    

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

    NOTE:此代码是手动输入的。可能存在语法错误。请以它为起点。

于 2012-07-23T21:19:14.677 回答
0

尝试执行查询方法。在“结果集”类的 java 文档中,您会找到一个示例:

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

于 2012-07-23T21:24:02.953 回答