我无法在我的表中或 phpmyadmin 上可视化列“特征”

Posted

技术标签:

【中文标题】我无法在我的表中或 phpmyadmin 上可视化列“特征”【英文标题】:I can't visualize the column "characteristics" in my table nor on phpmyadmin 【发布时间】:2018-11-30 01:51:30 【问题描述】:

我是这个网站的新手 我的问题是,一旦我将所有信息移到表格中以进入其每一列,这些信息中的每一个都会添加但不是我的“特征”列,并且它也不会出现在 phpmyadmin 中

框架习惯

import Datos.vhabitacion;
import Logica.fhabitacion;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class FrmHabitacion extends javax.swing.JFrame 
public FrmHabitacion() 
    initComponents();
    mostrar("");
    inhabilitar();


private String accion = "guardar";

    // instancias
    vhabitacion dts = new vhabitacion();
    fhabitacion func = new fhabitacion();

    dts.setNum_hab(txtnumero.getText());

    int seleccionado = cbopiso.getSelectedIndex();
    dts.setPiso_hab((String) cbopiso.getItemAt(seleccionado));

    dts.setDescripción_hab(txtdescripcion.getText());

我相信错误出现在这一行,因为我在线程“AWT-EventQueue-0”java.lang.NullPointerException 中收到错误异常。

    dts.setCaracteristicas_hab(txtcaracteristicas.getText());

我知道这可能很愚蠢,但我似乎找不到错误

    //string to double
    dts.setPrecio_noche(Double.parseDouble(txtprecio_diario.getText()));

    seleccionado = cboestado.getSelectedIndex();
    dts.setEstado_hab((String) cboestado.getItemAt(seleccionado));

    seleccionado = cbotipo_habitacion.getSelectedIndex();
    dts.setTipo_hab((String) cbotipo_habitacion.getItemAt(seleccionado));

    if (accion.equals("guardar")) 
        if (func.insertar(dts)) 
            JOptionPane.showMessageDialog(rootPane, "La habitación fue registrada satisfactoriamente" );
            //mostrar todos los registros
            mostrar("");
            inhabilitar();
        

    else if(accion.equals("editar"))
        dts.setIdhabitacion(Integer.parseInt(txtidhabitacion.getText()));

        if (func.editar(dts)) 
            JOptionPane.showMessageDialog(rootPane, "La habitación fue editada satisfactoriamente" );
            mostrar("");
            inhabilitar();
         
    

**btnDelete**
  if (!txtidhabitacion.getText().equals("")) 
        int confirmacion = JOptionPane.showConfirmDialog(rootPane, "Estás seguro de eliminar la habitación?", "Confirmar", 2);

        if (confirmacion == 0) 
            fhabitacion func = new fhabitacion();
            vhabitacion dts = new vhabitacion();

            dts.setIdhabitacion(Integer.parseInt(txtidhabitacion.getText()));
            func.eliminar(dts);
            mostrar("");
            inhabilitar();
        


    

private void tablalistadoMouseClicked(java.awt.event.MouseEvent evt)                                           
    btnguardar.setText("Editar");
    habilitar();
    btneliminar.setEnabled(true);
    accion = "editar";

    int fila = tablalistado.rowAtPoint(evt.getPoint());

    txtidhabitacion.setText(tablalistado.getValueAt(fila, 0).toString());
    txtnumero.setText(tablalistado.getValueAt(fila, 1).toString());

    cbopiso.setSelectedItem(tablalistado.getValueAt(fila, 2).toString());
    txtdescripcion.setText(tablalistado.getValueAt(fila, 3).toString());
    //error
    txtcaracteristicas.setText(tablalistado.getValueAt(fila,4).toString());
    //txtcaracteristicas.setText(tablalistado.getValueAt(fila, 4).toString());
    txtprecio_diario.setText(tablalistado.getValueAt(fila, 5).toString());

    cboestado.setSelectedItem(tablalistado.getValueAt(fila, 6).toString());
    cbotipo_habitacion.setSelectedItem(tablalistado.getValueAt(fila, 7).toString());





     catch (ClassNotFoundException | SQLException e) 
        JOptionPane.showMessageDialog(null, e);
    
    return link;



居住环境

public class vhabitacion 
private int idhabitacion;
private String num_hab;
private String piso_hab;
private String descripción_hab;
private String caracteristica_lab;
private Double precio_noche;
private String estado_hab;
private String tipo_hab;

public vhabitacion(int idhabitacion, String num_hab, String piso_hab, String descripción_hab, String caracteristica_lab, Double precio_noche, String estado_hab, String tipo_hab) 
    this.idhabitacion = idhabitacion;
    this.num_hab = num_hab;
    this.piso_hab = piso_hab;
    this.descripción_hab = descripción_hab;
    this.caracteristica_lab = caracteristica_lab;
    this.precio_noche = precio_noche;
    this.estado_hab = estado_hab;
    this.tipo_hab = tipo_hab;


public vhabitacion() 


public int getIdhabitacion() 
    return idhabitacion;


public void setIdhabitacion(int idhabitacion) 
    this.idhabitacion = idhabitacion;


public String getNum_hab() 
    return num_hab;


public void setNum_hab(String num_hab) 
    this.num_hab = num_hab;


public String getPiso_hab() 
    return piso_hab;


public void setPiso_hab(String piso_hab) 
    this.piso_hab = piso_hab;


public String getDescripción_hab() 
    return descripción_hab;


public void setDescripción_hab(String descripción_hab) 
    this.descripción_hab = descripción_hab;


public String getCaracteristicas_hab() 
    return caracteristica_lab;


public void setCaracteristicas_hab(String caracteristicas_hab) 
    this.caracteristica_lab = caracteristica_lab;


public Double getPrecio_noche() 
    return precio_noche;


public void setPrecio_noche(Double precio_noche) 
    this.precio_noche = precio_noche;


public String getEstado_hab() 
    return estado_hab;


public void setEstado_hab(String estado_hab) 
    this.estado_hab = estado_hab;


public String getTipo_hab() 
    return tipo_hab;


public void setTipo_hab(String tipo_hab) 
    this.tipo_hab = tipo_hab;

习惯

 public class fhabitacion 

private conexion mysql = new conexion();
private Connection cn = mysql.conectar();
//almacenar cadena de conexión
private String sSQL ="";
public Integer totalregistros;

//mostrar registros base de datos: habitación
public DefaultTableModel mostrar(String buscar)
    DefaultTableModel modelo;

    //vector para guardar título
    String [] titulos = "ID", "Número", "Piso", "Descripción", "Caracteristica", "Precio", "Estado", "Tipo de habitación";

    //array para almacenar registros de cada uno de los títulos
    String [] registro = new String[8];


    totalregistros = 0;
    modelo = new DefaultTableModel(null, titulos);

    sSQL="select * from habitacion where piso_hab like '%"+ buscar + "%' order by idhabitacion";
    //System.out.println(sSQL);

    try 
        Statement st = cn.createStatement();
        //ejecutar statement
        ResultSet rs = st.executeQuery(sSQL);

        //navegación de todos los registros
        while(rs.next())
            registro [0] = rs.getString("idhabitacion");
            registro [1] = rs.getString("num_hab");
            registro [2] = rs.getString("piso_hab");
            registro [3] = rs.getString("descripción_hab");
            registro [4] = rs.getString("caracteristica_lab");
            registro [5] = rs.getString("precio_noche");
            registro [6] = rs.getString("estado_hab");
            registro [7] = rs.getString("tipo_hab");

            totalregistros = totalregistros + 1;
            modelo.addRow(registro);
        
        return modelo;
     catch (Exception e) 
        JOptionPane.showConfirmDialog(null, e);
        return null;
    



public boolean insertar(vhabitacion dts)
    sSQL = "insert into habitacion(num_hab,piso_hab,descripción_hab,caracteristica_lab,precio_noche,estado_hab,tipo_hab) values (?,?,?,?,?,?,?)";
    try 
        PreparedStatement pst = cn.prepareStatement(sSQL);
        pst.setString(1, dts.getNum_hab());
        pst.setString(2, dts.getPiso_hab());
        pst.setString(3, dts.getDescripción_hab());
        pst.setString(4, dts.getCaracteristicas_hab());
        pst.setDouble(5, dts.getPrecio_noche());
        pst.setString(6, dts.getEstado_hab());
        pst.setString(7, dts.getTipo_hab());

        int n = pst.executeUpdate();

        if(n != 0)
            return true;

        else
            return false;
        


     catch (Exception e) 
        JOptionPane.showConfirmDialog(null, e);
        return false;
     


public boolean editar(vhabitacion dts)
    sSQL = "update habitacion set num_hab=?,piso_hab=?,descripción_hab=?,caracteristica_lab=?,precio_noche=?,estado_hab=?,tipo_hab=? where idhabitacion=?";

    try 
        PreparedStatement pst = cn.prepareStatement(sSQL);
        pst.setString(1, dts.getNum_hab());
        pst.setString(2, dts.getPiso_hab());
        pst.setString(3, dts.getDescripción_hab());
        pst.setString(4, dts.getCaracteristicas_hab());
        pst.setDouble(5, dts.getPrecio_noche());
        pst.setString(6, dts.getEstado_hab());
        pst.setString(7, dts.getTipo_hab());
        pst.setInt(8, dts.getIdhabitacion());

        int n = pst.executeUpdate();

        if(n != 0)
            return true;

        else
            return false;
        

     catch (Exception e) 
        JOptionPane.showConfirmDialog(null, e);
        return false;
    



public boolean eliminar(vhabitacion dts)
    sSQL="delete from habitacion where idhabitacion=?";
    try 
        PreparedStatement pst = cn.prepareStatement(sSQL);

        pst.setInt(1, dts.getIdhabitacion());

        int n = pst.executeUpdate();

        if(n != 0)
            return true;

        else
            return false;
        


     catch (Exception e) 
        JOptionPane.showConfirmDialog(null, e);
        return false;
    






每一栏都满了,除了特征栏,虽然我也完成了那部分

Characteristics can't be visualized

nor here 任何帮助将不胜感激!

编辑: 我在行中设置了断点 pst.setString(4, dts.getCaracteristicas_hab());

并打印它,但没有错误消息,断点似乎也没有任何作用......

there's no feedback

再次感谢您的帮助,如果错误看起来很明显,我很抱歉,我还是编码世界的新手!

【问题讨论】:

你能提供一个minimal reproducible example吗?我认为可以从您的帖子中删除大量代码。 这里有很多信息,]。你想要什么?哪里失败了? @Gatusko 我无法将特征字段保存在我的表中,也无法保存在 phpmyadmin 中。我似乎找不到错误, 【参考方案1】:

好的。 dts.setCaracteristicas_hab(txtcaracteristicas.getText()); 你从这里得到的数据正确吗?您需要断点以查看是否从此处获取正确的数据。如果不在您的插入中,则为空值

sSQL = "insert into habitacion(num_hab,piso_hab,descripción_hab,caracteristica_lab,precio_noche,estado_hab,tipo_hab) values (?,?,?,?,?,?,?)";
    try 
        PreparedStatement pst = cn.prepareStatement(sSQL);
        pst.setString(1, dts.getNum_hab());
        pst.setString(2, dts.getPiso_hab());
        pst.setString(3, dts.getDescripción_hab());
        pst.setString(4, dts.getCaracteristicas_hab()); // Breakpoint here and see that was settet correctly the Caractersticas if not is null.

检查你的代码

txtcaracteristicas.setText(tablalistado.getValueAt(fila,4).toString());

在这里你得到一个空值。影响对象中的保存和数据库的保存也是如此。所以检查tablalistado.getValueAt(fila,4),看看为什么你在这里得到空值。

【讨论】:

很抱歉打扰您,您能再检查一下我的编辑吗? tablalistado.getValueAt(fila,4).toString() 你能打印一下吗?如果是你想要的输出 你的意思是这样吗? System.out.print(tablalistado.getValueAt(fila, 4).toString());? 我建议使用断点,但到目前为止尝试一下,看看是否是所需的输出。

以上是关于我无法在我的表中或 phpmyadmin 上可视化列“特征”的主要内容,如果未能解决你的问题,请参考以下文章

将 phpMyAdmin 连接到 MySQL Workbench

由于我删除了 phpMyadmin 中的表,Php artisan 无法正常工作,如何撤消此操作?

在 phpmyadmin 中将列插入到预先存在的表中

phpmyadmin 在创建存储过程时卡住了

我想在我的表中获取多维数组

从 phpmyadmin 创建一个填充的下拉列表