如何设置从sql数据库到java文本框的值?

时间:2017-04-22 05:07:16

标签: java sql sql-server

当我尝试从SQL Server访问数据时,数据列的类型为varchar。但我尝试将其设置为文本框,我得到了这种类型的异常

将varchar值'09ran01'转换为数据类型int

时转换失败
package src.ui;

import src.ui.ImageHandler;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.event.*;
import java.sql.*;
import javax.swing.*;

import java.awt.*;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.DateFormat;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class AddAccount extends JPanel implements ActionListener, DocumentListener, KeyListener {

    String imagefolder = ImageHandler.returnimagepath();
    Image bgImage = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/src/ui/images/bgc.jpg"));
    private static final long serialVersionUID = 1L;
    public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
    String iden[] = {"Student","Others"};
    String type[] = {"Account User", "Walkthrough User"};
    JLabel userid = new JLabel("USER ID");
    JLabel name = new JLabel("FULL NAME");
    JLabel pswrd = new JLabel("PASSWORD");
    JLabel ident = new JLabel("IDENTIFICATION");
    JLabel idno = new JLabel("ID NUMBER");
    JLabel Add = new JLabel("ADDRESS");
    JLabel acctype = new JLabel("ACCOUNT TYPE");
    JTextField userFld = new JTextField(10);
    JTextField nameFld = new JTextField(10);
    JPasswordField pswrdFld = new JPasswordField(10);
    JComboBox identC = new JComboBox(iden);
    JComboBox actype = new JComboBox(type);
    JTextField idFld = new JTextField(10);
    JTextArea addArea = new JTextArea(10, 10);
    JButton okButton = new JButton("OK");
    JButton exitButton = new JButton("RESET");
    JButton b1 = new JButton("SEARCH");
    JScrollPane scroll = new JScrollPane(addArea);

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/cybman", "root", "");
        } catch (Exception e) {
            //System.out.println(e);
        }
        return conn;
    }
    public static Connection getConnection1() {
        Connection con = null;
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
           con = DriverManager.getConnection("jdbc:sqlserver://localhost\\BCA1:1433;databaseName=Old_Bhandarkars;user=sa;password=1234");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"SERVER ERROR");
            //System.out.println(e);
        }
        return con;
    }

    public void changedUpdate(DocumentEvent ev) {
    }

    public void removeUpdate(DocumentEvent ev) {
    }

    public void insertUpdate(DocumentEvent ev) {
    }

    public void paintComponent(Graphics g) {
        g.drawImage(bgImage, 0, 0, this);
    }

    public void init() {
        setLayout(null);
        okButton.addActionListener(this);
        b1.addActionListener(this);
        exitButton.addActionListener(this);
        pswrdFld.addActionListener(this);
        pswrdFld.setEchoChar('*');
        addArea.getDocument().addDocumentListener(this);
        identC.addActionListener(this);
        actype.addActionListener(this);
        userid.setBounds(270, 20, 120, 20);
        userFld.setBounds(470, 20, 140, 20);
        b1.setBounds(670, 20, 100, 20);
        name.setBounds(270, 70, 120, 20);
        nameFld.setBounds(470, 70, 140, 20);
        pswrd.setBounds(270, 120, 120, 20);
        pswrdFld.setBounds(470, 120, 140, 20);
        ident.setBounds(270, 170, 120, 20);
        identC.setBounds(470, 170, 140, 20);
        idno.setBounds(270, 220, 120, 20);
        idFld.setBounds(470, 220, 140, 20);
        acctype.setBounds(270, 270, 120, 20);
        actype.setBounds(470, 270, 140, 20);
        Add.setBounds(270, 320, 320, 20);
        scroll.setBounds(470, 320, 140, 60);
        okButton.setBounds(270, 410, 100, 20);
        okButton.addKeyListener(this);
        exitButton.setBounds(510, 410, 100, 20);
    }

    public AddAccount() {
        init();
        add(userid);
        add(userFld);
        add(name);
        add(nameFld);
        add(pswrd);
        add(pswrdFld);
        add(ident);
        add(identC);
        add(idno);
        add(idFld);
        add(acctype);
        add(actype);
        add(Add);
        add(b1);
        add(scroll);
        add(okButton);
        add(exitButton);
    }

    public static String now() {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
        return sdf.format(cal.getTime());

    }

    private String getDateTime() {
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();
        return dateFormat.format(date);
    }
    public class Function
    {
       Connection  con=getConnection1();
     ResultSet rs;  

       public ResultSet find(String s)
       {
          int a=Integer.parseInt(s);
           try{
               Statement sta = con.createStatement();
           String s1 = "select * from Members where Fld_Member_Id="+a+"";
         rs = sta.executeQuery(s1);


           }
           catch(Exception ex){
               JOptionPane.showMessageDialog(null,"No connection");
               //JOptionPane.showMessageDialog(null,ex.getMessage());
           }
           //JOptionPane.showMessageDialog(null,rs);

       return rs;

       }

    }

    public void actionPerformed(ActionEvent e) {
        String str = e.getActionCommand();
        char[] pass;
        String uid;
        String nam;
        String add;
        String id;
        String idnum;
        String actyp;
        int amt = 0;
        String datE;
        if (str.equals("SEARCH")) {
            Function f=new Function();
            ResultSet rs=null;
            String n1="Fld_First_Name";
            String i1="Fld_Member_Id";
            String address="Fld_PAddr";
            uid = userFld.getText();


            if(uid.equals(""))
            {
                JFrame msg=new JFrame();
                JOptionPane.showMessageDialog(msg, "Please enter the user id", "Error Message", JOptionPane.ERROR_MESSAGE);

            }
           // simple.main();
           else
            {
                 //idFld.setText(userFld.getText());
            rs=f.find(userFld.getText());
           // System.out.println("Fld_First_Name");
            try{
                if(rs.next()){
//                     int i = Integer.parseInt(rs.getString("Fld_First_Name"));
//                    int j = Integer.parseInt(rs.getString("Fld_Member_Id"));
//                    int k = Integer.parseInt(rs.getString("Fld_PAddr"));
                   nameFld.setText(rs.getString("Fld_First_Name"));
                   idFld.setText(rs.getString("Fld_Member_Id"));
                   addArea.setText(rs.getString("Fld_PAddr"));

                }
                else
                {
                    JOptionPane.showMessageDialog(null,"No data");
                }
            }
            catch(Exception ex)
            {
                 JOptionPane.showMessageDialog(null,ex.getMessage());
            }
            }
        }

        if (str.equals("OK")) {


            try {

                uid = userFld.getText();
                nam = nameFld.getText();
                pass = pswrdFld.getPassword();
                add = addArea.getText();
                idnum = idFld.getText();
                id = (String) identC.getSelectedItem();
                actyp = (String) actype.getSelectedItem();
                datE = getDateTime();
                String pwrd = new String(pass);

                Connection conn = getConnection();

                /*ERROR CHECKING*/
                boolean success = true;

                if (uid.equals("")) {
                    JFrame msg = new JFrame();
                    JOptionPane.showMessageDialog(msg, "Please enter the user id", "Error Message", JOptionPane.ERROR_MESSAGE);
                    success = false;
                } else if (nam.equals("")) {
                    JFrame msg = new JFrame();
                    JOptionPane.showMessageDialog(msg, "Please enter the name", "Error Message", JOptionPane.ERROR_MESSAGE);
                    success = false;
                } else if (pwrd.equals("")) {
                    JFrame msg = new JFrame();
                    JOptionPane.showMessageDialog(msg, "Please enter the password", "Error Message", JOptionPane.ERROR_MESSAGE);
                    success = false;
                } else if ((!id.equals("Student")) && (idnum.equals(""))) {
                    JFrame msg = new JFrame();
                    JOptionPane.showMessageDialog(msg, "Please enter the identification number", "Error Message", JOptionPane.ERROR_MESSAGE);
                    success = false;
                } else if (add.equals("")) {
                    JFrame msg = new JFrame();
                    JOptionPane.showMessageDialog(msg, "Please enter the address", "Error Message", JOptionPane.ERROR_MESSAGE);
                    success = false;
                }

                /*end of ERROR CHECKING*/

                if (success == true) {
                    ///////////ENSURE/////////
                    JFrame msg = new JFrame();
                    int choice;
                    choice = JOptionPane.showConfirmDialog(msg, "Are you sure?", "Select your choice", JOptionPane.OK_CANCEL_OPTION);
                    /////////////////////////

                    if (choice == JOptionPane.OK_OPTION) {
                        str = "insert into account(userid,name,password,address,identification,identificationnum,amount,dates,acctype" + ") values (?,?,?,?,?,?,?,?,?)";
                        PreparedStatement ps = conn.prepareStatement(str);

                        ps.setString(1, uid);
                        ps.setString(2, nam);
                        ps.setString(3, pwrd);
                        ps.setString(4, add);
                        ps.setString(5, id);
                        ps.setString(6, idnum);
                        ps.setInt(7, amt);
                        ps.setString(8, datE);
                        ps.setString(9, actyp);

                        int count;
                        count = ps.executeUpdate();
                        count++;
                        count--;

                        //////////////////////////////
                        ReportPanel.userC.addItem(uid);
                        ViewAccount.userC.addItem(uid);

                        if (actyp.equals("Account User")) {
                            RechargePanel.userC.addItem(uid);
                        }
                        //////////////////////////////

                        JFrame msg1 = new JFrame();
                        JOptionPane.showMessageDialog(msg1, "An account has been successfully created", "Information", JOptionPane.INFORMATION_MESSAGE);
                    } else if (choice == JOptionPane.CANCEL_OPTION) {
                        JOptionPane.showMessageDialog(msg, "Account Creation Aborted", "Information", JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                //conn.close();


            } catch (SQLException e1) {
                String error;
                JFrame msg = new JFrame();
                //error=e1.toString();
                error = "Your entry for user id already exists";
                JOptionPane.showMessageDialog(msg, error, "Error Message", JOptionPane.ERROR_MESSAGE);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                String error;
                JFrame msg = new JFrame();
                error = e1.toString();
                JOptionPane.showMessageDialog(msg, error, "Error Message", JOptionPane.ERROR_MESSAGE);

            }

        }
///////////////////////////////////////////////////////////////////////////     
        if (str.equals("RESET")) {
            try {
                userFld.setText("");
                nameFld.setText("");
                pswrdFld.setText("");
                addArea.setText("");
                idFld.setText("");
            } catch (Exception e2) {
                String error;
                JFrame msg = new JFrame();
                error = e2.toString();
                JOptionPane.showMessageDialog(msg, error, "Error Message", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
///////////////////////////////////////////////////////////

    public void keyPressed(KeyEvent key) {
        //
    }
/////////////////////////////////////////////////////   

    public void keyReleased(KeyEvent key) {
        if (key.getSource() == pswrdFld) {
            if (key.getKeyCode() == KeyEvent.VK_ENTER) {
            }
        }
    }

/////////////////////////////////////////////////
    public void keyTyped(KeyEvent key) {
       //
    }
//////////////////////////////////////////////

}

如何将所有值设置为文本框?

            field name                    data type
---------------------------------------------------------------------
          Fld_First_Name                varchar
          Fld_Member_Id                 varchar
          Fld_PAddr                     nvarchar


SELECT  * FROM Members where Fld_Member_Id='14932';


_____________________________________________________________________________
Fld_Member_Id    Fld_First_Name       Fld_PAddr
______________________________________________________________________________
14932               abc               abc

2 个答案:

答案 0 :(得分:4)

如果您不确定memberID的类型是什么,请使用

idFld.setText(String.valueOf("Your value"));

答案 1 :(得分:3)

在SQL查询的WHERE子句中,varchar变量应该在单引号内。试试String s1 = "select * from Members where Fld_Member_Id='"+a+"'"; 将单引号添加到语句中。我认为如果正确传递varchar值,它应该使用您提到的setText方法。