【问题标题】:Java database applicationJava 数据库应用程序
【发布时间】:2012-07-23 21:16:20
【问题描述】:

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

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

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();
        }
    }
}

}

附:连接属性在另一个类“Konekcija”中

【问题讨论】:

    标签: java database


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        “从表中选择”的返回数据将是 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: 此代码是手动输入的。可能存在语法错误。请以它为起点。

        【讨论】:

        • 我也在考虑这个,但我不知道该怎么做。
        • @brano88:用示例更新了我的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        • 2021-07-15
        相关资源
        最近更新 更多