QA@IT

EclipseでのMySQL接続

6738 PV

簡単な質問ですいませんが、

Eclipse上でMySQLに接続するJavaファイルを作りました。

その後、

実行
→サーバで実行
→Javaアプリケーション

の2つがありますが、

→Javaアプリケーション
でやったときは正常にConsoleにDBのテーブルが表示されますが、
→サーバで実行
でやったときは、Consoleに
ドライバを読み込めませんでした java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

となります。なぜでしょうか?

また、別の質問になるのですが、昔使っていたEclipseでは、Javaファイルを変更保存すれば、数秒後にConsoleに「変更を反映しました(要するにコンパイル自動でしました)」というメッセージが出ていたと思うのですが、今使っているEclipse Oxygenではそれが出ず、毎度サーバを再起動して変更反映させています。仕様が変わったのでしょうか。

  • まずは、eciipseで作ったプロジェクトのlibフォルダには、mysqlとのconectorのjarファイルは格納しましたか? -
  • ありがとうございます。これが原因でエラーが出ていたようです。 -

回答

僕が昔書いたプログラムを掲載してみます。
参考にならかったら、疑問な点をコメント下さい。

// Created by Xslt generator for Eclipse.
// XSL : not found (java.io.FileNotFoundException: (Bad file descriptor))
// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

package tera;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**

  • RegistAction.java created by EasyStruts - XsltGen.
  • http://easystruts.sf.net
  • created on 12-21-2006
  • XDoclet definition:
  • @struts:action path="/Regist" name="RegistForm" input="registConfirm.jsp"
  • @struts:action-forward name="success" path="registComplte.jsp"
    */
    public class RegistAction extends Action {

    // --------------------------------------------------------- Instance Variables

    // --------------------------------------------------------- Methods

    /**

    • Method execute
    • @param ActionMapping mapping
    • @param ActionForm form
    • @param HttpServletRequest request
    • @param HttpServletResponse response
    • @return ActionForward
    • @throws Exception
      */
      public ActionForward execute(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception{

      RegistForm sap = (RegistForm)form;
      String ID1 = sap.getId();
      String PW1 = sap.getPw();
      String NAME1 = sap.getName();

      try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      Connection dbConn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mymall", "921", "5544");
      Statement stmt = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      stmt.executeUpdate("insert into mytable values ('" + ID1 + "','" + PW1 + "','" + NAME1 + "')");

      stmt.close();
      dbConn.close();         
      

      } catch (Exception e) {
      e.printStackTrace();
      }

      return (mapping.findForward("success"));

    }

}

編集 履歴 (0)
  • お忙しい中、ご回答頂き、ありがとうございます。

    プログラムの問題ではなく、TomcatのLibフォルダ内にmysqlとのconectorのjarファイルを格納することで、解決しました。
    -
  • よかったですね。また、Eclipseで「プロジェクト」→「自動的にビルド」に一度チェックしておいておけば、毎度変更反映されると思います。どのEclipseでもそのはずです。
    あと、ついでになのですが、僕はどうでもいいのですが、一様僕の回答をベストアンサーにして、この質問は解決済みで絞めといた方がいいんじゃないですか。QA@ITはその様な規則だったような気がします。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。