2013-07-28 30 views
-2

我在从数据库获取数据以输出到控制台时遇到问题。而不是检索这个信息字符串sql =“选择*从公司”;我的输出是这使用Java从数据库检索数据

[email protected] 
1 John javax.swing.JLabel[,0,42,195x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Age: ,verticalAlignment=CENTER,verticalTextPosition=CENTER] javax.swing.JLabel[,0,84,195x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Address: ,verticalAlignment=CENTER,verticalTextPosition=CENTER] javax.swing.JLabel[,0,126,195x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Salary: ,verticalAlignment=CENTER,verticalTextPosition=CENTER] 

继承人我的代码:

package userinterface; 

import javax.swing.JFrame; 

import java.awt.FlowLayout; 

import javax.swing.JButton; 

import javax.swing.JDialog; 

import javax.swing.JLabel; 

import javax.swing.JOptionPane; 

import javax.swing.JTextField; 

import backend.SQLiteDb; 

import business.Person; 

import java.awt.event.ActionListener; 

import java.awt.event.ActionEvent; 

import java.awt.BorderLayout; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class GUI { 

    static SQLiteDb db; 

    public static void main(String[] args) { 

     final JFrame jframe = new JFrame(); 

     JButton btnEnterInfo = new JButton("Enter Info"); 

     jframe.getContentPane().add(btnEnterInfo, BorderLayout.CENTER); 

     jframe.setVisible(true); 

     jframe.setSize(300, 300); 

     btnEnterInfo.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) { 

       JLabel fullName = new JLabel("Full Name: "); 

       JTextField nameField = new JTextField(); 

       JLabel age = new JLabel("Age: "); 

       JTextField ageField = new JTextField(); 

       JLabel address = new JLabel("Address: "); 

       JTextField addressField = new JTextField(); 

       JLabel salary = new JLabel("Salary: "); 

       JTextField salaryField = new JTextField(); 

       Object[] ob = { fullName, nameField, age, ageField, address, 
         addressField, 

         salary, salaryField }; 

       int result = JOptionPane.showConfirmDialog(null, ob, "Part 5", 

       JOptionPane.OK_CANCEL_OPTION); 

       jframe.getContentPane().setLayout(new FlowLayout()); 

       if (result == JOptionPane.OK_OPTION) { 

        db = new SQLiteDb(); 

        db.createPersonnelTable(); 
        String fullName1 = nameField.getText(); 
        String userAge = ageField.getText(); 
        String userAddress = addressField.getText(); 
        String userSalary = salaryField.getText(); 
        Person person = new Person(fullName1, Integer 
          .parseInt(userAge), userAddress, 

        Double.parseDouble(salaryField.getText())); 

        db.addPerson(person); 

        String sql = "SELECT * FROM COMPANY"; 

        Statement stmt = null; 

        try { 
         java.sql.Statement s; 

         Connection connection = DriverManager 
           .getConnection("JDBC:sqlite:Andy.db"); 
         stmt = connection.createStatement(); 
         ResultSet rs = stmt.executeQuery(sql); 
         while (rs.next()) { 
          int id_col = rs.getInt("ID"); 
          String name = rs.getString("name"); 
          int age1 = rs.getInt("Age"); 
          float address1 = rs.getFloat("Address"); 
          double salary1 = rs.getInt("Salary"); 
          System.out.println(rs); 
          String output = id_col + " " + name + " " +   age + " " + address + " " + salary; 
          System.out.println(output); 
          rs.close(); 
         } 
        } catch (SQLException ee) { 
         System.out.println("ee error"); 
         ee.printStackTrace(); 

        } finally { 
         if (stmt != null) { 
          try { 
           stmt.close(); 
          } catch (SQLException e1) { 
           // TODO Auto-generated catch block 
           System.out.println("e1 error"); 
          e1.printStackTrace(); 
          } 
         } 
        } 


       } 

      } 
     }); 

    } 

    public static void viewTable(Connection con, String dbName) 
      throws SQLException { 

    } 
+2

您的问题来自您制作的命名选项非常差。你将几乎完全不同的变量命名为相同的东西。不要那样做,至少不要在相同的范围内。 – Mat

+0

(在一个函数中做太多东西) – Mat

回答

2

你犯了一个错字。你应该有age1,而不是age

String output = id_col + " " + name + " " +   age1 + " " + address + " " + salary; 

ageJLabel对象。

+0

...和地址和工资相同的问题。 –

+0

谢谢!它现在有效。它现在以名称+ age1 + address1 + salary1格式输出,但它不输出我在GUI中输入的内容。它输出:每次1约翰22 2123.0 66000.0,即使我输入不同的数据,我不知道为什么?下面是我通过pastebin创建的sqlite类。我没有足够的字符在这里粘贴http://pastebin.com/2MGCcwf5 – dfasfsd