検索
ホームページJavaJava を MySQL データベースに接続する

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

Feb 22, 2024 pm 12:58 PM
Javaアプリケーションoverflow

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)。

java.lang.classnotfoundexception: com.mysql.jdbc.driver
ここでは、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で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。