1

パラメータに値を渡すときにメソッドを作成したいのですが、それはSQLステートメントに渡されます。ここに私が試したものがあります:

import java.sql.*;
import java.util.*;
import java.text.*;

public class cobadatabase{
    protected String sn,fn,ln;
    private Connection conn;
    private PreparedStatement st; 
    public cobadatabase(String studentnumber)
    { 

        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/studentrecords","root","");
            st = conn.prepareStatement("SELECT * FROM student WHERE Student_Number=?");
            ResultSet rs = st.executeQuery();


            while (rs.next()){

                sn = rs.getString(1);
                fn = rs.getString(2);
                ln = rs.getString(3);
                SimpleDateFormat ft = new SimpleDateFormat("kk:mm:ss");
                ft.format(rs.getTime("Total Time").getTime());

            }
        }
        catch(Exception e){
            e.printStackTrace();

        }

私のコードの何が問題なのかわかりません。印刷用のデータを取得したいだけです

4

2 に答える 2

0

私はあなたがそのようなことを意味すると思います:

public String Func (String par1, String par2) throws SQLException {
     String query;
     query ="SELECT ... WHERE COLUMN_NAME between  +"'"+par1+"'"+" AND " +"'"+par2+"'"+..."; 

    rs = st.executeQuery(query);   // get data or just Execute without getting results

文字列の間には" '' "(二重引用符ではない) が必要ですが、数値には必要がないことに注意してください。

于 2012-10-07T21:27:44.093 に答える
0

パラメータを設定していませんprepareStatement

st = conn.prepareStatement("SELECT * FROM student WHERE Student_Number=?");
// You need to set the parameter for `?`
st.setString(1, studentnumber);  // Add this code in between..
ResultSet rs = st.executeQuery();

そして実際には、それは方法ではありません..それはConstructorあなたが使用している..そして、あなたはそれを間違った目的で使用しています..

技術的には、コンストラクターの唯一の目的は、作成されるオブジェクトの属性を初期化するか、使用する環境を初期化することです。

を使用database queryしたり、他の種類のタスクを実行したりするには、メソッドを使用して、それを呼び出す必要があります。

于 2012-10-07T19:27:59.863 に答える