在java中从数据库中检索值

2024-01-17

我正在制作一个程序,从我创建的数据库中检索输入的数据/字段值。但当我运行它时,输出始终为空。我想知道怎么了?这是我的代码:

import java.sql.*;

public class GuestsInfo
{
private String  firstName, lastName;
private int  age;
private Connection con;
private PreparedStatement statement;

public GuestsInfo()
{
    try {
         Class.forName("com.mysql.jdbc.Driver");
         con = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/3moronsdb","root","");
    } catch (Exception e) {
         e.printStackTrace();
    }
}
public GuestsInfo(String firstName, String lastName, int age)
{
    this();
    try
    {   
        statement = con.prepareStatement("Insert into guest(firstName,lastName,age)values(?,?,?)");

        statement.setString(1, firstName);
        statement.setString(2, lastName);
        statement.setInt(3, age);

        statement.executeUpdate();
        con.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
        return;
    }   
}


public void setFirstName(String firstName)
{

    try{
        statement= con.prepareStatement("SELECT * FROM guest WHERE firstName = ?");
        statement.setString(1, firstName);
        ResultSet rs = statement.executeQuery();
        while(rs.next()){
            firstName = rs.getString(1);
        }
    }catch(Exception e){
        System.out.print(e);
    }
}

public String getFirstName(){
    return firstName;
}

public void setLastName(String lastName)
{

    try{
        statement= con.prepareStatement("SELECT * FROM guest WHERE lastName = ?");
        statement.setString(2, lastName);
        ResultSet rs = statement.executeQuery();
        while(rs.next()){
            lastName = rs.getString(2);
        }
    }catch(Exception e){
        System.out.print(e);
    }
}

public String getLastName(){
    return lastName;
}

public void setAge(int age){
    try{
        statement = con.prepareStatement("SELECT * FROM guest WHERE age=?");
        statement.setInt(3, age);
        ResultSet rs = statement.executeQuery();
        while(rs.next()){
            age = rs.getInt(3);
        }
    }catch(Exception e){
        System.out.print(e);
    }
}

public int getAge(){
    return age;
}

在我的主课中,我有以下代码:

 public class TestMain {
public static void main(String [] args){

    GuestsInfo gi = new GuestsInfo();
    gi.setFirstName("Ericka");
    System.out.println(gi.getFirstName());

}
 }

我想知道为什么当我运行它时它总是显示 null 。


您实际上并没有在设置器中“设置”任何内容。

public void setFirstName(String firstName)
{

    try{
    // Here you create a READing statement.
        statement= con.prepareStatement("SELECT * FROM guest WHERE firstName = ?");
        statement.setString(1, firstName);
        ResultSet rs = statement.executeQuery();
        while(rs.next()){
    // Here you set the >>method param<< to a non-existing String
            firstName = rs.getString(1);
        }
    }catch(Exception e){
       System.out.print(e);
    }
}
// After the method is done you have done nothing because you didn't even set your class member variable "firstName", which you would have set using "this.firstName".

最重要的是:我对 getter 和 setter 的理解是,您将在 getter 中执行查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中从数据库中检索值 的相关文章

  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static

随机推荐