这是我第一次使用java连接数据库。我通常使用PHP。 我需要一个帮助来从查询结果创建一个对象数组。 让我解释一下代码。
类Studente.java
public class Studente {
String id;
String username;
String password;
String nome;
String cognome;
public Studente(String id, String username, String password, String nome, String cognome) {
this.id = id;
this.username = username;
this.password = password;
this.nome = nome;
this.cognome = cognome;
}
public Studente load(String[] data) {
Studente studente = new Studente(data[0], data[1], data[2], data[3], data[4]);
return studente;
}
}
Class StudenteRepository.java:
public class StudenteRepository {
public Studente[] selectAll() throws SQLException {
Studente[] studenti = null;
DBManager db = new DBManager();
Connection conn = db.connect();
String query = "SELECT * FROM Studente";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
//???
}
return studenti;
}
通常在php中我这样做:
public function selectAll(){
$db = Database::getInstance();
$stmt = $db->prepare("SELECT * FROM `users`");
$stmt->execute();
$users = array();
while($result = $stmt->fetch()) {
$users[] = User::load($result);
}
return $users;
}
如何在java中更改php代码$users[] = User::load($result);
?
谢谢
答案 0 :(得分:1)
你想要的是Java:
List<Student> res = new LinkedList<Student>();
while(rs.next()){
res.add(new Student(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5)));
}
我使用了一个列表,因为列表更容易使用。我选择了LinkedList,因为它们在添加元素时具有更好的性能。
答案 1 :(得分:0)
此刻,我正在通过手机,请原谅不良格式化
在while循环内部为结果集
中的每个结果创建一个新的用户对象用户res =新用户(res.getInt(&#34; student_id&#34;),res.getString(&#34; student_forename&#34;));
ArrayList users = new ArrayList(); users.add(RES);
希望这足以让您入门,res.getString("student_forename")
从您的数据库中的学生forename列获取当前值。
答案 2 :(得分:0)
Herr是一家Studente工厂:
public Studente createStudente(ResultSet rs) {
String id = rs.getString(COLUMN_NAME_ID);
String username = rs.getString(COLUMN_NAME_USERNAME);
String password = rs.getString(COLUMN_NAME_PASSWORD);
String nome = rs.getString(COLUMN_NAME_NOME);
String cognome = rs.getString(COLUMN_NAME_COGNOME);
return new Studente(id, username, password, nome, cognome);
}
我建议您将查询更改为以下内容,以便列名称和顺序不存在歧义。
SELECT ID, USERNAME, PASSWORD, NOME, COGNOME FROM 'users';
答案 3 :(得分:0)
您应该使用Studente类的getter和setter来获得最佳练习,而不是使用Studente加载方法。你也应该创建一个java集合,例如。列表适合这种情况。
List<Studente> studentes = new ArrayList<Studente>();
while(rs.next()){
Studente studente = new Studente(rs.getString("id"),rs.getString("username"),rs.getString("password"),rs.getString("nome"),rs.getString("cognome"));
studentes.add(studente);
}
答案 4 :(得分:0)
请不要触发查询从数据库中的任何表中选择*。我已经附上了样本灵魂。你可以参考一下
List<City> listCities = new ArrayList<City>();
String sqlString = "select City_Name,Airport from AR_Cities";
PreparedStatement st = null;
ResultSet rs = null;
try
{
st = DBConnection.GetConnection().prepareStatement(sqlString);
rs= st.executeQuery();
while (rs.next())
{
listCities.add(new City(rs.getString("City_Name"),rs.getString("Airport")));
//在你的caase中你可以使用.rs.getString(1)等。 }
rs.close();
DBConnection.CloseConnection(st.getConnection());
}catch(Exception exp)
{
System.out.println("In FlightsADO->GetAllCities "+ exp.getMessage());
return null;
}
return listCities;