如何在数据库中显示记录到jtextfield?

时间:2014-01-13 00:41:01

标签: java swing ms-access

先生/女士 需要帮助

我想在文本字段中显示数据库中的记录。即使代码调试成功,我也没有得到它的结果

我是编程语言的新手

* 这些是我的代码*

 import java.awt.Container;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.sql.*;
 import javax.swing.*;
 public abstract class customer_details extends JFrame implements ActionListener 
 {
JTextField cust_id,cust_nm,cont;
JLabel l1,l2,l4,l5;
JButton b1,b2;
private PreparedStatement ps;
Container c = getContentPane();    
customer_details()
{
    super("ancfsdfasdfasfas");
    setBounds(140,250,777,555);
    c.setLayout(null);
    cust_id = new JTextField();
    l1 = new JLabel("Update Customer Details");
    l2 = new JLabel("Customer Id");
    l1.setBounds(10,10,340,20);        
    l2.setBounds(10,20,140,70);
    l4 = new JLabel("Customer Name");
    l4.setBounds(90,140,100,20);
    cust_nm = new JTextField();
    cust_nm.setBounds(90,160,160,20);
    l5 = new JLabel("Contact No");
    l5.setBounds(270,140,100,20);
    cont = new JTextField();
    cont.setBounds(270, 160, 100, 20);
    cust_id.setBounds(10,70,70,20);
b1 = new JButton("View");       
b1.setBounds(90,70,90,20); 
    b2 = new JButton("Update");
    b2.setBounds(10,200,90,20);
    c.add(l1);
    c.add(l2);
    c.add(l4);
    c.add(l5);
    c.add(cust_id);
    c.add(cust_nm);
    c.add(cont);
    c.add(b1);  
    c.add(b2);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);  
    b1.addActionListener(this);
    b2.addActionListener(this);
}
public static void main(String[] args) 
{
    customer_details cpap=new customer_details() {};
}
public void actionPerformed(ActionEvent e)
{               
    System.out.println("You clicked the button");
    if(e.getSource()==b1)
    {
        try 
        {
            Connection con;
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("jdbc:odbc:Dalvi");
            ResultSet rs = null;
            try 
            {
                java.sql.Statement st = con.createStatement();
                PreparedStatement ps = con.prepareStatement("select from customer_details (customer_name,contact_no) where customer_id=?)");                          
                ps.setString(1,cust_id.getText());                    
                if (rs.next()) 
                {                       
                    cust_nm.setText(rs.getString("customer_name"));
                    cont.setText(rs.getString("contact_no"));                       
                } 
                JOptionPane.showMessageDialog(null,"You Successfully Deleted The Customer");                           
                    } 
                    catch (SQLException s) 
                    {
                        System.out.println("SQL code does not execute.");
                        JOptionPane.showMessageDialog(null,"Please Enter the Detail Correctly");   
                    }
                } 
                catch (ClassNotFoundException | SQLException ee) 
                {
                    System.out.println("Error:connection not created");
                    JOptionPane.showMessageDialog(null,"Please Enter the Detail Correctly");
                }
            }               
        }

}

感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

目前,基于你的例子,你应该得到一个例外...

select from customer_details (customer_name,contact_no) where customer_id=?

不是有效查询。它看起来应该更像

select customer_name, contact_no from customer_details where customer_id=?

答案 1 :(得分:1)

您的查询存在问题。纠正它,并在你有任何记录时返回你的控制。

if (rs.next()) {
cust_nm.setText(rs.getString("customer_name")); cont.setText(rs.getString("contact_no")); return;
}

答案 2 :(得分:1)

  1. 您的查询错误。看看@MadProgrammer的答案。
  2. ResultSet为空。您尚未执行查询以返回ResultSet

    PreparedStatement ps = con.prepareStatement("select customer_name, contact_no from customer_details where customer_id=?");                          
    ps.setString(1,cust_id.getText()); 
    
    rs = ps.executeQuery();
    
    if (rs.next()) 
    {                       
         cust_nm.setText(rs.getString("customer_name"));
         cont.setText(rs.getString("contact_no"));                       
     } 
    
  3. 我在结果集代码

    之后也注意到了这一点
    JOptionPane.showMessageDialog(null,"You Successfully Deleted The Customer");
    

    这告诉我也许你想删除一条记录。仅仅是一个FYI,SELECT不会删除数据库记录。