0

誰かがこれを手伝ってくれますか:私はJavaデータベースアプリケーションを作成しています.select、insert、update、およびdeleteのメソッドを別のクラスから呼び出して再利用できるように別のクラスに入れたいです。これまで、準備されたステートメントを使用しない場合は、更新と削除、および挿入のメソッドのみを分離することができました。私が遭遇している問題は、データベースから選択してテーブルに入れるときにデータを返す方法です。

ここに、Queries クラスの update メソッドと delete メソッドがあります。

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

executeQueryメソッドを試してください。「resultset」クラスのJavadocには、次の例があります。

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

于 2012-07-23T21:24:02.953 に答える
0

「テーブルから選択」の戻りデータはResultSetになります。

  1. ResultSet を呼び出し元に返し、値を取得することができます (または)
  2. Queries クラスの "Select" メソッド内で、結果セットからデータを取得し、VO オブジェクトを設定し、この VO をコレクションに追加してコレクションを返します ( ResultSetで複数の行を取得すると仮定します)。たとえば、User テーブルをクエリする場合は、get/set メソッドを使用して Java Bean クラス「User」を作成します。取得した値をこの Bean に設定して返します。// 一部のパッケージで get/set を使用して User クラスを作成します。

    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 = 新しいユーザー(); myUser.setFirstName(fName); }

    NOTE:このコードは手書きです。構文エラーがある可能性があります。出発点としてご利用ください。

于 2012-07-23T21:19:14.677 に答える