我从Access数据库中检索了一个大数字。为什么Java会显示这个10位数字。尽管我使用“Number”作为该列的数据类型,但是在其单元格中为E + 9,而不是显示完整数字。
除了使用“Text”数据类型之外,有没有办法在单元格中显示完整数字而不是E +“”。如果没办法,怎么应该长久不行。从Java程序编码从数据库中检索?
例如: - 9867605659将使用Number数据类型显示为E + 9,可以从java程序输入,如何从数据库中取回它并将其设置为文本字段为9867605659?
import javax.swing.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import net.java.dev.designgridlayout.DesignGridLayout;
import java.io.*;
import net.java.dev.designgridlayout.Tag;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
class Driverproblem
{
JFrame JF;
JDesktopPane JDP;
JInternalFrame JIF4,JIF13;
Container C,C4,C13;
JMenu FileMenu;
JMenuItem Settings,CompanyInfo;
JMenuBar JMB;
JLabel i4l1,i4l2,i4l3,i4l4,i4l5,i4l6,i4l7,i13l1,i13l2,i13l3,i13l4,i13l5,i13l6,i13l7;
JTextField i4t1,i4t2,i4t3,i4t4,i4t5,i4t6,i13t1,i13t2,i13t3,i13t4,i13t5,i13t6;
JButton i4b1,i13b1;
JTextArea i4ta1,i13ta1;
Color color;
public Driverproblem()
{
JF=new JFrame("Quick Accounting");
JDP=new JDesktopPane();
JMB=new JMenuBar();
C=JF.getContentPane();
color = Color.lightGray;
JDP.setBackground(color);
C.add(JDP,BorderLayout.CENTER);
C.add(JMB, BorderLayout.NORTH);
JF.pack();
JF.setLocationRelativeTo(null);
JF.setVisible(true);
FileMenu=new JMenu("File");
CompanyInfo=new JMenuItem("Company Info");
CompanyInfo.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JIF4.setVisible(true);
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection i4conn = DriverManager.getConnection("Jdbc:Odbc:TomsJava");
PreparedStatement i4ps = i4conn.prepareStatement("select * from i13SaveUserSettings");
ResultSet i4rs = i4ps.executeQuery();
while(i4rs.next())
{
String i4companyName = i4rs.getString("Company_Name");
String i4address = i4rs.getString("Address");
String i4place = i4rs.getString("Place");
long i4phone = i4rs.getLong("Phone");
int i4pincode = i4rs.getInt("Pincode");
String i4email = i4rs.getString("Email");
String i4website = i4rs.getString("Website");
System.out.println(i4phone);
i4t1.setText(i4companyName);
i4ta1.setText(i4address);
i4t2.setText(i4place);
i4t4.setText(String.valueOf(i4phone));
i4t4.setText(String.valueOf(i4pincode));
i4t5.setText(i4email);
i4t6.setText(i4website);
}
i4rs.close();
i4ps.close();
i4conn.close();
}
catch(SQLException e)
{
System.out.println(e);
}
catch(ClassNotFoundException z)
{
System.out.println(z);
}
catch(NumberFormatException n)
{
System.out.println(n);
}
}
});
JIF4 = new JInternalFrame("Company Information",true,true, true, true);
JIF4.setBounds(10, 10, 600, 500);
C4 = JIF4.getContentPane();
DesignGridLayout layout4 = new DesignGridLayout(C4);
i4l1 = new JLabel("Company Name : ");
i4l2 = new JLabel("Address : ");
i4l3 = new JLabel("Place : ");
i4l4 = new JLabel("Phone : ");
i4l5 = new JLabel("Pincode : ");
i4l6 = new JLabel("Email : ");
i4l7 = new JLabel("Website : ");
i4t1 = new JTextField(20);
i4t2 = new JTextField(20);
i4t3 = new JTextField(20);
i4t4 = new JTextField(20);
i4t5 = new JTextField(20);
i4t6 = new JTextField(20);
i4ta1 = new JTextArea(5,20);
i4b1 = new JButton("Close");
i4b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JIF4.dispose();
}
});
layout4.row().grid(i4l1).add(i4t1);
layout4.row().grid(i4l2).add(i4ta1);
layout4.row().grid(i4l3).add(i4t2);
layout4.row().grid(i4l4).add(i4t3);
layout4.row().grid(i4l5).add(i4t4);
layout4.row().grid(i4l6).add(i4t5);
layout4.row().grid(i4l7).add(i4t6);
layout4.emptyRow();
layout4.row().center().add(i4b1);
JDP.add(JIF4);
Settings=new JMenuItem("Settings");
Settings.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JIF13.setVisible(true);
}
});
JIF13 = new JInternalFrame("User Settings",true,true, true, true);
JIF13.setBounds(10, 10, 600, 500);
C13 = JIF13.getContentPane();
DesignGridLayout layout13 = new DesignGridLayout(C13);
i13l1 = new JLabel("Company Name : ");
i13l2 = new JLabel("Address : ");
i13l3 = new JLabel("Place : ");
i13l4 = new JLabel("Phone : ");
i13l5 = new JLabel("Pincode : ");
i13l6 = new JLabel("Email : ");
i13l7 = new JLabel("Website : ");
i13t1 = new JTextField(20);
i13t2 = new JTextField(20);
i13t3 = new JTextField(20);
i13t4 = new JTextField(20);
i13t5 = new JTextField(20);
i13t6 = new JTextField(20);
i13ta1 = new JTextArea(5,20);
i13b1 = new JButton("Save");
i13b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection i13conn = DriverManager.getConnection("Jdbc:Odbc:TomsJava");
String i13companyName = i13t1.getText();
String i13address = i13ta1.getText();
String i13place = i13t2.getText();
long i13phone = Long.valueOf(i13t3.getText());
int i13pincode = Integer.parseInt(i13t4.getText());
String i13email = i13t5.getText();
String i13website = i13t6.getText();
Statement i13stmt = i13conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet i13rs = i13stmt.executeQuery("SELECT * FROM i13SaveUserSettings");
i13rs.absolute(1);
i13rs.updateString("Company_Name", i13companyName);
i13rs.updateString("Address",i13address);
i13rs.updateString("Place",i13place);
i13rs.updateLong("Phone",i13phone);
i13rs.updateInt("Pincode",i13pincode);
i13rs.updateString("Email",i13email);
i13rs.updateString("Website",i13website);
i13rs.insertRow();
i13rs.close();
i13stmt.close();
}
catch(SQLException e)
{
System.out.println(e);
}
catch(ClassNotFoundException z)
{
System.out.println(z);
}
catch(NumberFormatException n)
{
System.out.println(n);
}
JIF13.dispose();
}
});
layout13.row().grid(i13l1).add(i13t1);
layout13.row().grid(i13l2).add(i13ta1);
layout13.row().grid(i13l3).add(i13t2);
layout13.row().grid(i13l4).add(i13t3);
layout13.row().grid(i13l5).add(i13t4);
layout13.row().grid(i13l6).add(i13t5);
layout13.row().grid(i13l7).add(i13t6);
layout13.emptyRow();
layout13.row().center().add(i13b1);
JDP.add(JIF13);
FileMenu.add(Settings);
FileMenu.add(CompanyInfo);
JMB.add(FileMenu);
}
public static void main(String args[]) throws SQLException,ClassNotFoundException
{
new Driverproblem();
}
}
答案 0 :(得分:2)
您的问题源于您显然正在尝试将[电话]存储为Number
。虽然我们倾向于将它们称为“电话号码”,但它们实际上只是数字串。它们不是数学意义上的“数字”,因为我们不需要对它们进行计算。 (例如,添加或减去两个电话号码没有任何用处。)
因此,您只需使用Access数据库中的Text
字段来存储[Phone](也可能使用[Pincode]的Text
字段)。
编辑重新评论
关于非常大(或非常小)的数字的显示,有几个因素可能导致数字以科学记数法出现。例如,在文本框中显示非常大的数字时,UI代码可以将数字切换为科学记数法
#######
)。当然,像Double
和Single
这样的浮点类型最有可能出现在科学记数法中,因为它们的值范围太大,以至于在某些时候我们不得不使用它。这可以通过以下Java代码来说明,其中Access表中的两个字段都包含12345678
ps = con.prepareStatement(
String.format("SELECT DoubleField, LongIntField FROM DemoTable WHERE ID=1")
);
ResultSet rs = ps.executeQuery();
rs.next();
System.out.println(rs.getDouble(1));
System.out.println(rs.getInt(2));
System.out.println(9223372036854775807L);
控制台输出
1.2345678E7
12345678
9223372036854775807
请注意,[DoubleField]值以科学计数法显示,即使更多空间比等效的标准表示法(12345678.0
)更多。 Java显然已经确定这个数字“足够大”以保证转换为科学记数法。另请注意,Java很高兴地打印出尽可能大的Long
值,即使它 大于Double
值。