为什么ResultSet没有提取我的ClientId字段? MySQL,Spring

时间:2016-12-04 17:06:40

标签: java mysql spring

您好我希望使用以下字段从MySQL数据库填充Client对象:
    Id;ApellidoPaterno;ApellidoMaterno;Nombre; Telefono; and Username

以下是我使用的create table命令:

'Cliente', 
    'CREATE TABLE `cliente` (
    `ClientId` int(11) NOT NULL,
    `ApellidoPaterno` varchar(255) NOT NULL,
    `ApellidoMaterno` varchar(255) DEFAULT NULL,
    `Nombre` varchar(255) DEFAULT NULL,
    `Telefono` mediumtext,
    `Username` varchar(255) NOT NULL,
PRIMARY KEY (`ClientId`)
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8'

我的Connection类:

package me.jmll.utm.config;

import java.sql.*;

public class Conexion{ 

public Connection getConexion(){  
    Connection con = null;      
    try {  
        Class.forName("com.mysql.jdbc.Driver");  
        con = DriverManager.getConnection(  
        "jdbc:mysql://localhost:3306/miscelanialabety","root","Patito01"); 
        return con;  
    }
    catch(Exception e){ 
        try {throw e;} 
    catch (Exception e1) { e1.printStackTrace();}}
    return con;
    }  
} 

我的getClientes()方法:

@Override
        public List<Cliente> getClientes() {
            String sql = "SELECT * FROM Cliente";

            try {
                conexion = new Conexion().getConexion();
                PreparedStatement ps = conexion.prepareStatement(sql);
                Cliente cliente = null;
                List<Cliente> listaClientes = new ArrayList<Cliente>();
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    cliente = new Cliente(
                        rs.getInt(1),
                        rs.getString("ApellidoPaterno"),
                        rs.getString("ApellidoMaterno"),
                        rs.getString("Nombre"),
                        rs.getLong("Telefono"),
                        rs.getString("Username")
                    );
                    listaClientes.add(cliente);
                }
                rs.close();
                ps.close();
                return listaClientes;
            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                if (conexion != null) {
                    try { conexion.close();}
                    catch (SQLException e) {}
                }
            }
        }

rs.getInt(1)行,我已尝试rs.getInt("ClientId"),但无效,我已尝试指定要在查询中返回的确切字段。

结果列表包含从db请求的所有字段,除了&#34; ClientId&#34;,这是最重要的!我哪里错了?

编辑注释:表格中的数据如下:

ID  AppelidoPaterno AppelidoMaterno Telefono Username

1   Osorio  Marquez Rafael  2227355623  RafaelOsorioMarquez
2   Hernandez   Carrillo    Rodrigo 2227128907  RodrigoHernandezCarrillo
3   Fernandez   Hernandez   Juan    2226770934  JuanFernandezHernandez
4   Gomez   Trujillo    Diego   2220200435  DiegoGomezTrujillo
5   Figueroa    Lopez   Roberto 2221106286  RobertoFigueroaLopez
6   Almeyda Martinez    Luis    2224376232  LuisAlmeydaMartinez
7   Lozano  Jimenez Cesar   2222338905  CesarLozanoJimenez
8   Reyes   Franco  Julio   2225205878  JulioReyesFranco
9   Peralta Perez   Carlos  2224783388  CarlosPeraltaPerez
15  Osorio  Carrillo    Gabriela    9981159756  GabrielaOsorioCarrillo

Edit2:Cliente class:

package me.jmll.utm.model;

public class Cliente
{
    int Id;
    String ApellidoPaterno;
    String ApellidoMaterno;
    String Nombre;
    long Telefono;
    String Username;
    //getter and setter methods

    public Cliente(int Id, String ApellidoPaterno,String ApellidoMaterno, 
                        String Nombre,long Telefono) {
        this.ApellidoPaterno = ApellidoPaterno;
        this.ApellidoMaterno = ApellidoMaterno;
        this.Nombre = Nombre;
        this.Telefono = Telefono;
    }

    public Cliente(int Id, String ApellidoPaterno,String ApellidoMaterno, 
            String Nombre,long Telefono, String Username) {
            this.ApellidoPaterno = ApellidoPaterno;
            this.ApellidoMaterno = ApellidoMaterno;
            this.Nombre = Nombre;
            this.Telefono = Telefono;
            this.Username = Username;
}

    public Cliente() {
        // TODO Auto-generated constructor stub
    }

    public void setId(int id) {
        this.Id = id;
    }

    public int getId() {
        return Id;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
       this.ApellidoPaterno = apellidoPaterno;
    }

    public String getApellidoPaterno() {
       return ApellidoPaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.ApellidoMaterno = apellidoMaterno;
     }

    public String getApellidoMaterno() {
        return ApellidoMaterno;
    }

    public void setNombre(String nombre) {
        this.Nombre = nombre;
    }

    public String getNombre() {
        return Nombre;
    }

    public void setTelefono(long telefono) {
        this.Telefono = telefono;
    }

    public long getTelefono() {
        return Telefono;
    }

    public String getUsername() {
        return Username;
    }

    public void setUsername(String username) {
        this.Username = username;
    }
}

1 个答案:

答案 0 :(得分:1)

在您的Cliente类构造函数中,您错过了设置id字段,因此请将其设置为this.id =id,如下面的代码所示:

public class Cliente {

        public Cliente(int Id, String ApellidoPaterno,String ApellidoMaterno, 
                String Nombre,long Telefono) {
            this.Id = Id; //this is missed out
            //set other fields as is
        }

        public Cliente(int Id, String ApellidoPaterno,String ApellidoMaterno, 
                String Nombre,long Telefono, String Username) {
            this.Id = Id; //this is missed out
            //set other fields as is
        }

        //add other code
    }