2012-04-10 42 views
0

工作,我有一個小程序,當我在Eclipse測試運行工作完全但當我進入這似乎並沒有工作的瀏覽器。Applet的SQL INSERT而非瀏覽器

我已閱讀已經是小程序沒有使用太多了,但我還是想了解他們的各種原因。

這是我的代碼。就像我說的那樣,它在eclipse中運行時的工作原理。

public class WPStool extends Applet implements ActionListener 
{ 
/** 
    * 
    */ 
private static final long serialVersionUID = 6920052961843268403L; 
Label lblCustNum, lblCustName, lblAccount, lblEmpID, lblSuccess; 
TextField txtCustNum, txtCustName, txtAccount, txtEmpID; 
Button bEnter; 
boolean blnCorrect; 

public void init() 
{ 
    lblCustNum = new Label("Customer #"); 
    add(lblCustNum); 

    txtCustNum = new TextField(20); 
    add(txtCustNum); 

    lblCustName = new Label("Customer Name"); 
    add(lblCustName); 

    txtCustName = new TextField(20); 
    add(txtCustName); 

    lblAccount = new Label("Account Type"); 
    add(lblAccount); 

    txtAccount = new TextField(20); 
    add(txtAccount); 

    lblEmpID = new Label("EmployeeID"); 
    add(lblEmpID); 

    txtEmpID = new TextField(20); 
    add(txtEmpID); 

    bEnter = new Button("Enter"); 
    add(bEnter); 
    bEnter.addActionListener(this); 
} 

public void actionPerformed(ActionEvent e) 
{ 

    if (e.getSource() == bEnter) 
    { 
     //registerUser(); 
     int custNum = Integer.parseInt(txtCustNum.getText()); 
     int empID = Integer.parseInt(txtEmpID.getText()); 
     enterInfo(custNum, txtCustName.getText(), txtAccount.getText(), empID); 
     txtCustNum.setText(""); 
     txtCustName.setText(""); 
     txtAccount.setText(""); 
     txtEmpID.setText(""); 
    } 
} 



public void enterInfo(int custNuma, String custNamea, String accounta, int empIDa) 
{ 
    Connection con = getConnection(); 
    try 
    { 
     Statement s = con.createStatement(); 
     String select = "INSERT INTO customerInfo (custNum , custName, account ,empID) VALUES ("+ custNuma +", '"+ custNamea +"', '"+ accounta +"', "+ empIDa +")"; 
     //String select = "INSERT INTO customerInfo (custNum , custName, account ,empID) VALUES (123, 'Jim John Joe', 'New Account', 1234)"; 
     s.executeUpdate(select); 
     lblSuccess = new Label("Success!"); 
     add(lblSuccess); 

    } 
    catch (SQLException e) 
    { 
     System.out.println("getClasses method: " + e.getMessage()); 
     lblSuccess = new Label("FAIL!"); 
     add(lblSuccess); 
    } 
} 

private Connection getConnection() 
{ 
    Connection con = null; 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String url = "jdbc:mysql://localhost/wps"; 
     String user = "root"; 
     String pw = ""; 
     con = DriverManager.getConnection(url, user, pw); 
    } 
    catch (ClassNotFoundException e) 
    { 
     System.out.println("getConnection ClassNotFound: " + e.getMessage()); 
     System.exit(0); 
    } 
    catch (SQLException e) 
    { 
     System.out.println("getConnection SQL: " + e.getMessage()); 
     System.exit(0); 
    } 
    return con; 
} 

} 

是否需要設置一些額外的瀏覽器設置?也。我正在導入JDBC,所以我可以使用SQL,我需要添加這個不知何故?

+1

您可能會遇到權限異常,例如Applets在安全管理器下運行的瀏覽器。你需要指定你正在得到什麼異常,以便人們可以更有效地幫助你 – ipolevoy 2012-04-10 06:27:37

+0

1)一定要檢查Java控制檯是否有錯誤。 2)數據庫是否與applet位於同一臺服務器上? 3)不要在這個千年中使用基於AWT的組件,請使用Swing。 – 2012-04-10 06:54:28

+0

哈哈謝謝你的提示。我讀過一些人更喜歡瀏覽器applet中的swing,但我會將其轉換爲swing。 – Bullyen 2012-04-10 22:53:43

回答

1

也許從瀏覽器的Java代碼無法連接到數據庫。

你必須改變你的應用程序結構,以及部分小程序從服務器部分分開。將小應用程序部分放入所有用戶界面邏輯,然後通過RMI或Web Service連接到服務器部分,發送數據,並在服務器端連接到數據庫。

如果您的客戶端能夠連接到數據庫,如果您使用連接URL釋放小程序jdbc:mysql://localhost/wps,則每個客戶端都會嘗試連接到運行小程序的同一臺機器上的數據庫。也就是說,如果您有10個客戶端,則每個嘗試都會搜索數據庫本身,因爲您使用的是localhost

不過我建議你到你的應用程序登錄兩個部分,我描述你上述分開。

+0

你是說寫一個PHP或JavaScript腳本來連接數據庫或你的意思是另一個Java類?我對Java很新,所以我希望這聽起來不笨。 – Bullyen 2012-04-10 06:28:28

+1

如果你知道更好的php,用php編寫服務器部分。然後從java發送數據調用php頁面,例如使用JSON。 – dash1e 2012-04-10 06:30:04

+0

很棒的回答。爲我的第二次投票選擇了1天(接下來的3小時)。 ;) – 2012-04-10 20:05:12