Convert empty string to integer to insert into database

2

How can I convert a text field (JTextField for example) empty, to integer, to later insert into the database?

I have in the database fields defined as int, but when the user does not fill a jTextField is an empty String that is not accepted in the database. How can I solve this problem?

Using NetBeans 8.0.1

Update:

Integer numOfContas = StringUtils.isNullOrEmpty(jFormattedNIFOfContas.getText().trim()) ? null : Integer.parseInt(jFormattedNIFOfContas.getText().trim());
        System.out.println("Nif Of Contas: " + numOfContas);

The variable numOfContas is already null, but is interpreted as String because it gives the following error:

Nif Of Contas: null
468
Dados não inseridos!!
nov 17, 2014 11:31:24 AM faturacao.ConfEmpresa jButtonRegistarActionPerformed
SEVERE: null
java.sql.SQLException: Incorrect integer value: 'null' for column 'NIF_Of_Contas' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
    at faturacao.ConfEmpresa.jButtonRegistarActionPerformed(ConfEmpresa.java:3050)
    at faturacao.ConfEmpresa.access$6300(ConfEmpresa.java:44)
    at faturacao.ConfEmpresa$62.actionPerformed(ConfEmpresa.java:1749)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Any suggestions?

    
asked by anonymous 14.11.2014 / 18:08

2 answers

1

You can use this syntax:

int numero = StringUtils.isNotBlank(minhaString) ? Integer.parseInt(minhaString) : 0;

So% w_of% is only used if w_% is not empty.


Theoretically, as stated in the comments, this syntax should work in NetBeans:

int numero = StringUtils.isNullOrEmpty(minhaString) ? 0 : Integer.parseInt(minhaString);

If you want parseInt , use the wrapper Integer:

Integer numero = StringUtils.isNullOrEmpty(minhaString) ? null : Integer.parseInt(minhaString);


Also, according to comments, you may need a minhaString to differentiate the null from zero when inserting in the DB:

int numero;
boolean flagNulo;

if( isNullOrEmpty(minhaString) ) {
   numero = 0;
   flagNulo = true;
} else {
   numero = Integer.parseInt(minhaString);
   flagNulo = false;
}

And at the time of inserting into the DB, test the flag .

    
14.11.2014 / 18:12
0

Use if :

    int valor;
    if (JTextField.getText().equals("")){
        valor=0;
    }else {
       valor=Integer.parseInt(JTextField.getText());
       //aqui até devias de verificar se por acaso o texto não contem nenhum texto, 
       //porque se o utilizador se enganar será lançada uma excepção 
}
    
14.11.2014 / 18:15