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 回答