2009-04-04 7 views
0

このコードは単純なアプリケーションで正常に動作しているため、ドライバは正常です。 なぜ接続オブジェクトをドライバで初期化できないのですか?接続オブジェクトがヌルになっているため、Struts2の例でmysqlデータベースにレコードが挿入されない

import java.sql.Connection;

import java.sql.DriverManager;

インポートjava.sql.SQLException;

import java.sql.Statement;

import com.opensymphony.xwork2.ActionSupport;

パブリッククラス挿入はActionSupport {

public String execute() throws Exception, SQLException { 

    String sql = ""; 

    String url = "jdbc:mysql://localhost:3306/test"; 

    //String dbName = "test"; 

    String driverName = "org.gjt.mm.mysql.Driver"; 

    String userName = "root"; 

    String password = "root"; 

    Connection con=null; 

    Statement stmt=null; 

    try { 

     Class.forName(driverName).newInstance(); 

     con = DriverManager.getConnection(url, userName, password); 

     stmt = con.createStatement(); 

    } catch (Exception e) { 

     System.out.println(e.getMessage()); 

    } 

}

+0

エラーメッセージ –

答えて

0

例外が何を言ってんを拡張しますか? createStatementのNullPointerException?

いずれにしても、クラスはロードされています。

Class.forName()から返されたオブジェクトをチェックして、クラスが見つかったかどうかを確認してください。

あなたのコメントの後、クラスパスに問題があることは明らかです。 mysql jarはクラスパス上にありません。私は日食でのビルドパスを変更することは簡単ではないので、あなたはWebアプリケーションの配信可能性(戦争ファイル)について話していると仮定します。

たとえば、tomcatにデプロイされているWebアプリケーションでは、< webapp-name >/WEB-INF/libを調べることができます。 WEB-INF/lib/mysql-connector-java-5.0.5.jarなどのファイルが存在するはずです。

warファイル(まだデプロイされていない)がある場合は、コマンドラインツール "jar"を使用してファイルを抽出するか、そこからファイルリストを取得できます。あなたが(コマンドラインで)jar tf | grep mysql jarfileを表示する必要があります。ウィンドウを使用する場合。 WinRAR(おそらくWinZip)もワールフィルを開くことができます。 WEB-INF/libでは、MySQL jarが表示されます。

mavenを使用してWebアプリケーションを構築する場合は、 mysql jarに依存関係を追加することを忘れないでください。 antを使ってビルドする場合。 warファイルを作成する前に、mysql jarファイルをWEB-INF/libにコピーすることを忘れないでください。

現在推​​奨されているドライバは「com.mysql.driver.Driver」であり、「org.gjt.mm.mysql.Driver」ではないことに注意してください。古いドライバの代わりにそのDriverクラスをロードしようとすることができます。さらに;このドライバが実際にmysql jar(jar tf mysq.jar | grep Driverなど)に入っているかどうかを確認してください。ドライバがmysql jar にある場合、mysql jarはwebappのクラスパス(WEB-INF/lib)にあります(バージョンの競合は楽しいものではありません)。動作しません本当に何が間違っているのか分かりません。私は再びMySQLからドライバのjarをダウンロードして、もう一度やり直すと思います。

+0

を提供します。Class.forName()はnullを返します。クラスが読み込まれました。これをどうやって解決するか? ありがとうございます – Jugal

+0

WEB-INF/libにmysqlコネクタjarファイルがありますが、com.mysql.jdbc.Driverの例外クラスが見つかりません。私は、warファイルを作成する前にjarファイルをビルドするためにantを使用しています。 – Jugal

+0

ありがとうございます。 問題は解決され、エラーはmysql jarファイルの拡張です。 – Jugal

関連する問題