2012-04-10 15 views
0

私はアプレットを持っています。私がアプレットを持っていて、Eclipseで動作するテストが完璧に動作します。アプレットSQL INSERTがブラウザで動作しません

私はもうアプレットがあまり使われていないことを読んだことがありますが、それでもいろいろな理由でそれらについて学びたいと思っています。

ここに私のコードです。私はそれが日食で実行するときに意図したように動作すると言ったように。

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; 
} 

} 

設定が必要なブラウザ設定がありますか?また、私はSQLを使用することができるように私はJDBCをインポートしている、私は何とかこれを追加する必要がありますか?

+1

ブラウザのように、アクセス許可の例外が発生する可能性があります。アプレットはセキュリティマネージャで実行されています。人々がより効果的に助けることができるように、あなたが得ている例外を指定する必要があります。 – ipolevoy

+0

1)Javaコンソールにエラーがないか必ず確認してください。 2)DBはアプレットと同じサーバーにありますか? 3)AWTベースのコンポーネントをこのミレニアムで使用しないでください。Swingを使用してください。 –

+0

lolチップをありがとう。私は、ブラウザのアプレットでAWTを好む人がいると読んでいましたが、これをスイングに変換します。 – Bullyen

答えて

1

多分ブラウザからJavaコードをデータベースに接続できません。

アプリケーション構造を変更し、アプレット部分とサーバー部分を分離する必要があります。アプレット部分にすべてのユーザーインターフェイスロジックを入れてから、RMIまたはWebサービス経由でサーバー部分に接続し、データを送信し、サーバー側でデータベースに接続します。

クライアントがデータベースに接続できる場合、接続URLがjdbc:mysql://localhost/wpsのアプレットをリリースすると、すべてのクライアントはアプレットを実行する同じマシンのデータベースに接続しようとします。つまり、クライアントが10人の場合は、localhostを使用しているため、データベース自体が検索されます。

しかし、上記で説明した2つの部分でアプリケーションのログインを分けることをお勧めします。

+0

DBに接続するためのPHPスクリプトやJavascriptスクリプトを書いているのですか、別のJavaクラスを意味していますか?私はJavaにとって非常に新しいので、これがばかげて聞こえないことを願っています。 – Bullyen

+1

あなたがもっと良いPHPを知っているなら、PHPでサーバー部分を書いてください。次にJSONなどでデータを送信するJavaからphpページを呼び出します。 – dash1e

+0

偉大な答え。その日の2回目の最後の投票(次の3時間、とにかく)を+1しました。 ;) –

関連する問題