ホームページ > Java > Java を MySQL データベースに接続する

Java を MySQL データベースに接続する

王林
リリース: 2024-02-22 12:58:14
転載
808 人が閲覧しました

php エディター Banana は、Java を MySQL データベースに接続することに関する特別な質問と回答を提供します。この記事では、Java アプリケーションで MySQL データベースに接続する方法を説明します。これにより、関連する知識を簡単に習得し、プログラミング スキルを向上させることができます。初心者でも経験豊富な開発者でも、データベース操作をより効率的かつ便利にするために、この記事で自分に合ったソリューションを見つけることができます。飛び込んでみましょう!

質問内容

Javaを使ってmysqlデータベースに接続するにはどうすればよいですか?

試してみると、

が得られます リーリー ###または### リーリー ###または###
java.sql.sqlexception: no suitable driver found for jdbc:mysql://database/table
    at java.sql.drivermanager.getconnection(drivermanager.java:689)
    at java.sql.drivermanager.getconnection(drivermanager.java:247)
ログイン後にコピー

ソリューション

データ ソース

drivermanager はかなり古いやり方です。より良いアプローチは、

DataSource オブジェクトを取得することです。 JNDI を使用して、構成されているアプリケーション サーバー コンテナを見つけることができます: リーリー ...または、データベース ドライバーから直接インスタンスを作成して構成します (com.mysql.cj.jdbc.mysqldatasource など) (

ドキュメントを参照

): リーリー ...そして、上記と同じようにそこから接続を取得します: リーリー 最新の Java では、

try-with-resources

構文を使用して、jdbc リソースを自動的に閉じます (現在は

AutoCloseable)。

ここでは、mysql と jdbc のインストール方法とその使用方法について段階的に説明します:

  1. をダウンロードして、mysql サーバー

    をインストールします。いつも通りにやってください。ポート番号を変更するときは必ずこの番号を覚えておいてください。デフォルトは 3306 です。

  2. jdbc ドライバーをダウンロードしてクラスパス

    に配置し、zip ファイルを解凍して、含まれている jar ファイルをクラスパスに配置します。ベンダー固有の jdbc ドライバーは、JDBC API (チュートリアルはこちら) の具体的な実装です。 Eclipse や Netbeans などの IDE を使用している場合は、jar ファイルを library として

    Build Path

    プロパティに追加することで、クラスパスに追加できます。 コマンド コンソールでこれを「通常の」方法で行う場合は、Java アプリケーションの実行時に -cp または

    -classpath

    パラメータで jar ファイルを指定する必要があります。パス。 リーリー . は、

    com.example.yourclass

    を見つけられるように、現在のディレクトリをクラスパスに追加するだけです。 はウィンドウ内にあるため、クラスパスの区切り文字です。 。 UNIX およびクローンでは、: を使用する必要があります。 サーブレットベースの war アプリケーションを開発していて、接続を手動で管理したい場合 (実際、これは悪い習慣です)、jar がビルドされた /web-inf に配置されるようにする必要があります。 /lib 中間。

    java.lang.ClassNotFoundException に直面せずに JAR ライブラリを WAR プロジェクトに追加する方法?クラスパス、ビルド パス、/WEB-INF/lib

    も参照してください。より良い方法は、物理 JDBC ドライバーの JAR ファイルをサーバー自体にインストールし、JDBC 接続プールを作成するようにサーバーを構成することです。 Tomcat の例を次に示します。サーブレット ベースのアプリケーションで JDBC データベース/データソースに接続するにはどうすればよいですか?

    mysql で
  3. database
  4. を作成します。データベース javabase を作成しましょう。もちろん世界を支配したいので、utf-8 も使用します。 リーリー

    java は
  5. Create a user
  6. にアクセスし、

    grant にアクセスします。単純に、root の使用は悪い習慣だからです。 リーリー はい、ここで java はユーザー名、

    password

    はパスワードです。

  7. jdbc URL

    を決定します。 Java を使用して mysql データベースに接続するには、次の構文を持つ jdbc URL が必要です:

    jdbc:mysql://hostname:port/databasename
    ログイン後にコピー
    • hostname:安装 mysql 服务器的主机名。如果它安装在运行 java 代码的同一台机器上,那么您可以只使用 localhost。它也可以是 ip 地址,例如 127.0.0.1。如果您遇到连接问题,并且使用 127.0.0.1 而不是 localhost 解决了该问题,那么您的网络/dns/主机配置有问题。

    • port:mysql 服务器监听的 tcp/ip 端口。默认情况下为 3306

    • databasename:您要连接的数据库的名称。那是 javabase

    所以最终的 url 应如下所示:

    jdbc:mysql://localhost:3306/javabase
    ログイン後にコピー
  8. Test the connection 使用 java 到 mysql。使用 main() 方法创建一个简单的 java 类来测试连接。

     string url = "jdbc:mysql://localhost:3306/javabase";
     string username = "java";
     string password = "password";
    
     system.out.println("connecting database ...");
    
     try (connection connection = drivermanager.getconnection(url, username, password)) {
         system.out.println("database connected!");
     } catch (sqlexception e) {
         throw new illegalstateexception("cannot connect the database!", e);
     }
    
    ログイン後にコピー

    如果您收到 sqlexception: no合适的驱动程序,则意味着 jdbc 驱动程序根本没有自动加载,或者 jdbc url 错误(即,任何加载的驱动程序都无法识别它)。另请参见 The infamous java.sql.SQLException: No suitable driver found。通常,当您将 jdbc 4.0 驱动程序放入运行时类路径中时,应该会自动加载它。要排除其中一个或另一个,您可以随时手动加载它,如下所示:

     System.out.println("Loading driver ...");
    
     try {
         Class.forName("com.mysql.cj.jdbc.Driver"); // Use com.mysql.jdbc.Driver if you're not on MySQL 8+ yet.
         System.out.println("Driver loaded!");
     } catch (ClassNotFoundException e) {
         throw new IllegalStateException("Cannot find the driver in the classpath!", e);
     }
    
    ログイン後にコピー

    请注意,此处不需要调用 newinstance() 。对于mysql,只是为了修复旧的且有缺陷的org.gjt.mm.mysql.driverExplanation here。如果此行抛出 classnotfoundexception,则说明包含 jdbc 驱动程序类的 jar 文件根本没有放置在类路径中。另请注意,抛出异常非常重要,以便立即阻止代码执行,而不是仅仅打印堆栈跟踪然后继续执行其余代码来抑制它。

    另请注意,您不需要每次在连接之前加载驱动程序。只需在应用程序启动期间一次就足够了。

    如果您收到 sqlexception: 连接被拒绝 connection timed out 或 mysql 特定的 communicationsexception: 通信链路故障 ,则意味着数据库根本无法访问。这可能由以下一个或多个原因造成:

    1. jdbc url 中的 ip 地址或主机名错误。
    2. 本地 dns 服务器无法识别 jdbc url 中的主机名。
    3. jdbc url 中的端口号缺失或错误。
    4. 数据库服务器已关闭。
    5. 数据库服务器不接受 tcp/ip 连接。
    6. 数据库服务器已耗尽连接。
    7. java 和 db 之间的某些东西正在阻塞连接,例如防火墙或代理。

    要解决其中一个问题,请遵循以下建议:

    1. 使用 ping 验证并测试它们。
    2. 刷新 dns 或在 jdbc url 中使用 ip 地址。
    3. 根据mysql db的my.cnf进行验证。
    4. 启动数据库。
    5. 验证 mysqld 是否在没有 --skip-networking 选项 的情况下启动。
    6. 重新启动数据库并相应地修复代码,使其关闭 finally 中的连接。
    7. 禁用防火墙和/或配置防火墙/代理以允许/转发端口。

    请注意,关闭 connection 极其非常重要。如果您不关闭连接并在短时间内不断获取大量连接,那么数据库可能会耗尽连接,并且您的应用程序可能会崩溃。始终获取 try-with-resources statement 中的 connection。这也适用于 statementpreparedstatementresultset。另见How often should Connection, Statement and ResultSet be closed in JDBC?

    这就是连接问题。您可以在 here 找到更高级的教程,了解如何借助基本 dao 类在数据库中加载和存储完整的 java 模型对象。

    对数据库 connection 使用单例模式和/或 static 变量是一种不好的做法。参见其他 Is it safe to use a static java.sql.Connection instance in a multithreaded system? 这是第一个初学者错误。确保您不会落入这个陷阱。

    以上がJava を MySQL データベースに接続するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート