首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java从mysql获取数据

使用java从mysql获取数据
EN

Stack Overflow用户
提问于 2013-09-28 03:15:37
回答 1查看 80关注 0票数 0

我是编程新手。我正在试着做一个软件。但我有个问题。

问题是:我的软件是学校管理软件。因此,当我在java中输入学生学号时,我需要检索他的信息(姓名、年龄等),这些信息我存储在mysql中。但我输入的代码总是给出相同的信息,无论我输入的是哪种卷轴。请帮帮忙

代码语言:javascript
复制
String LibraryCardNo = txtCard.getText();
    String firstName = "";
    String lastName = "";
    String Job = "";
    String Age = "";
    String LibraryCard = "";

    try{
    Class.forName("java.sql.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/library?" + "user=root&password=ainkhalid"); 

    Statement s = con.createStatement();
    String query = "select * from application";
    ResultSet rs = s.executeQuery(query);

    while(rs.next()){
        firstName = rs.getString("firstName");
        lastName = rs.getString("lastName");
        Job = rs.getString("job");
        Age = rs.getString("age");
        LibraryCard = rs.getString("LibraryCardNo");
    }

    rs.close();
    s.close();
    con.close();
    }

    catch(Exception e){
        String msg = e.getMessage();  
System.out.println("The problem is :"+msg); 
    }

    txtLast.setText(lastName);
    txtFirst.setText(firstName);
    txtJob.setText(Job);
    txtAge.setText(Age);
EN

回答 1

Stack Overflow用户

发布于 2013-09-28 03:17:07

这是因为您循环遍历结果,但只保留对最后一个结果的引用

代码语言:javascript
复制
while(rs.next()){
    firstName = rs.getString("firstName");
    lastName = rs.getString("lastName");
    Job = rs.getString("job");
    Age = rs.getString("age");
    LibraryCard = rs.getString("LibraryCardNo");
}

只要还有数据要读,方法ResultSet#next()就会返回true并移动其内部迭代器。

尝试立即打印它们或将所有数据封装到一个类中,实例化对象并将它们添加到列表中,然后打印出来。

代码语言:javascript
复制
public class Student {
    String firstName = "";
    String lastName = "";
    String job = "";
    String age = "";
    String libraryCard = "";

    // getters, setters, and constructors
}

然后

代码语言:javascript
复制
List<Student> students = new LinkedList<>();
while(rs.next()){
    firstName = rs.getString("firstName");
    lastName = rs.getString("lastName");
    Job = rs.getString("job");
    Age = rs.getString("age");
    LibraryCard = rs.getString("LibraryCardNo");
    Student student = new Student(firstName, lastName, Job, Age, LibraryCard);
    students.add(student);
}
// display them accordingly

考虑阅读this official tutorial

显然,如果您只想从数据库中检索一行,则必须切换查询。就像这样

代码语言:javascript
复制
    String query = "select * from application where roll = ?";

使用PreparedStatement并设置?占位符的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19058442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档