Inhaltsverzeichnis
Frageninhalt
Lösung
数据源
Heim Java Verbinden Sie Java mit der MySQL-Datenbank

Verbinden Sie Java mit der MySQL-Datenbank

Feb 22, 2024 pm 12:58 PM
java应用程序 overflow

Der

php-Editor Banana bietet Ihnen eine spezielle Frage und Antwort zum Verbinden von Java mit einer MySQL-Datenbank. In diesem Artikel erfahren Sie, wie Sie in einer Java-Anwendung eine Verbindung zu einer MySQL-Datenbank herstellen, sodass Sie relevante Kenntnisse leicht erlernen und Ihre Programmierkenntnisse verbessern können. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, in diesem Artikel finden Sie eine Lösung, die zu Ihnen passt, um den Datenbankbetrieb effizienter und komfortabler zu gestalten. Lass uns eintauchen!

Frageninhalt

Wie stelle ich mit Java eine Verbindung zur MySQL-Datenbank her?

Wenn ich es versuche, bekomme ich

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)
Nach dem Login kopieren

oder

java.lang.classnotfoundexception: com.mysql.jdbc.driver
Nach dem Login kopieren

oder

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Nach dem Login kopieren

Lösung

数据源

drivermanager 是一种相当古老的做事方式。更好的方法是获取 DataSource Objekt. Mit JNDI können Sie den Anwendungsserver-Container finden, der für Sie konfiguriert wurde:

context context = new initialcontext();
datasource datasource = (datasource) context.lookup("java:comp/env/jdbc/mydb");
Nach dem Login kopieren

…oder instanziieren und konfigurieren Sie einen direkt aus dem Datenbanktreiber, z. B. com.mysql.cj.jdbc.mysqldatasource (siehe Dokumentation):

mysqldatasource datasource = new mysqldatasource();
datasource.setuser("scott");
datasource.setpassword("tiger");
datasource.setservername("mydbhost.example.org");
Nach dem Login kopieren

… dann stellen Sie die Verbindung daraus her, genau wie oben:

connection conn = datasource.getconnection();
statement stmt = conn.createstatement();
resultset rs = stmt.executequery("select id from users");
…
rs.close();
stmt.close();
conn.close();
Nach dem Login kopieren

Verwenden Sie in modernem Java die Syntax try-with-resources, um JDBC-Ressourcen automatisch zu schließen (jetzt AutoCloseable).

try (
    connection conn = datasource.getconnection();
    statement stmt = conn.createstatement();
    resultset rs = stmt.executequery("select id from users");
) {
    …
}
Nach dem Login kopieren

Hier finden Sie Schritt-für-Schritt-Anleitungen zur Installation von MySQL und JDBC und zur Verwendung:

  1. Laden Sie den MySQL-Server herunter und installieren Sie ihn. Machen Sie es einfach wie gewohnt. Denken Sie daran, wenn Sie die Portnummer ändern. Der Standardwert ist . 3306

  2. Laden Sie den JDBC-Treiber herunter und fügen Sie ihn in den Klassenpfad ein. Entpacken Sie die ZIP-Datei und fügen Sie die enthaltene JAR-Datei in den Klassenpfad ein. Herstellerspezifische JDBC-Treiber sind konkrete Implementierungen der JDBC-API (Tutorial hier). Wenn Sie eine IDE wie Eclipse oder Netbeans verwenden, können Sie die JAR-Datei zum Klassenpfad hinzufügen, indem Sie sie als Bibliothek zur Eigenschaft

    Build Path

    in Ihrem Projekt hinzufügen. Wenn Sie dies auf „normale“ Weise in der Befehlskonsole tun, müssen Sie beim Ausführen der Java-Anwendung den Pfad zur JAR-Datei im Parameter angeben.

    java -cp .;/path/to/mysql-connector.jar com.example.yourclass
    Nach dem Login kopieren

    . -cp-classpath

    Wenn Sie eine Servlet-basierte War-Anwendung entwickeln und Verbindungen manuell verwalten möchten (eigentlich ist dies eine schlechte Praxis), müssen Sie sicherstellen, dass das JAR im

    ​​Ihres Builds landet. Siehe auch . 只是将当前目录添加到类路径中,以便它可以找到 com.example.yourclass 是类路径分隔符,因为它在视窗。在 unix 和克隆中,应使用 :Wie füge ich JAR-Bibliotheken zum WAR-Projekt hinzu, ohne dass java.lang.ClassNotFoundException auftritt? Ein besserer Ansatz besteht darin, die physische JDBC-Treiber-JAR-Datei auf dem Server selbst zu installieren und den Server so zu konfigurieren, dass er einen JDBC-Verbindungspool erstellt. Hier ist ein Beispiel für Tomcat:

    Wie soll ich in einer Servlet-basierten Anwendung eine Verbindung zur JDBC-Datenbank/-Datenquelle herstellen?

    /web-inf/lib Erstellen Sie eine

    Datenbank
  3. in MySQL. Lassen Sie uns eine Datenbank erstellen

    . Natürlich wollen Sie die Welt beherrschen, deshalb verwenden wir auch utf-8.

    create database javabase default character set utf8 collate utf8_unicode_ci;
    Nach dem Login kopieren
    javabaseJava greift auf

    Benutzer erstellen
  4. zu, der auf
  5. Grant

    zugreift. Ganz einfach, weil die Verwendung von eine schlechte Praxis ist.

    create user 'java'@'localhost' identified by 'password';
     grant all on javabase.* to 'java'@'localhost' identified by 'password';
    Nach dem Login kopieren
    Ja, hier ist das Passwort. root

    java 是用户名,password

    Bestimmen
  6. JDBC-URL
  7. . Um mit Java eine Verbindung zur MySQL-Datenbank herzustellen, benötigen Sie eine JDBC-URL mit der folgenden Syntax:

    jdbc:mysql://hostname:port/databasename
    Nach dem Login kopieren
    • 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
    Nach dem Login kopieren
  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);
     }
    
    Nach dem Login kopieren

    如果您收到 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);
     }
    
    Nach dem Login kopieren

    请注意,此处不需要调用 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? 这是第一个初学者错误。确保您不会落入这个陷阱。

    Das obige ist der detaillierte Inhalt vonVerbinden Sie Java mit der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Jan 15, 2025 pm 08:11 PM

Seit seiner Einführung im Jahr 2009 hat sich Bitcoin zu einem führenden Unternehmen in der Welt der Kryptowährungen entwickelt und sein Preis hat enorme Schwankungen erfahren. Um einen umfassenden historischen Überblick zu bieten, stellt dieser Artikel Bitcoin-Preisdaten von 2009 bis 2025 zusammen und deckt wichtige Marktereignisse, Änderungen der Marktstimmung und wichtige Faktoren ab, die die Preisbewegungen beeinflussen.

Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Jan 15, 2025 pm 08:14 PM

Bitcoin hat als Kryptowährung seit seiner Einführung erhebliche Marktvolatilität erlebt. Dieser Artikel bietet einen Überblick über den historischen Preis von Bitcoin seit seiner Geburt, um den Lesern zu helfen, seine Preistrends und Schlüsselmomente zu verstehen. Durch die Analyse der historischen Preisdaten von Bitcoin können wir die Einschätzung des Marktes über seinen Wert und die Faktoren, die seine Schwankungen beeinflussen, verstehen und eine Grundlage für zukünftige Investitionsentscheidungen schaffen.

Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Feb 11, 2025 pm 11:36 PM

Seit seiner Gründung im Jahr 2009 hat der Preis von Bitcoin im November 2021 auf 69.044,77 USD auf 69.044,77 USD gestiegen und im Dezember 2018 auf 3.191,22 USD gesunken. Ab Dezember 2024 hat der jüngste Preis 100.204 USD überschritten.

Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Wie kann man das Größensymbol durch CSS anpassen und es mit der Hintergrundfarbe einheitlich machen? Wie kann man das Größensymbol durch CSS anpassen und es mit der Hintergrundfarbe einheitlich machen? Apr 05, 2025 pm 02:30 PM

Die Methode zur Anpassung der Größe der Größe der Größe der Größe in CSS ist mit Hintergrundfarben einheitlich. In der täglichen Entwicklung begegnen wir häufig Situationen, in denen wir die Details der Benutzeroberfläche wie Anpassung anpassen müssen ...

Ist die H5-Seitenproduktion eine Front-End-Entwicklung? Ist die H5-Seitenproduktion eine Front-End-Entwicklung? Apr 05, 2025 pm 11:42 PM

Ja, die H5-Seitenproduktion ist eine wichtige Implementierungsmethode für die Front-End-Entwicklung, die Kerntechnologien wie HTML, CSS und JavaScript umfasst. Entwickler bauen dynamische und leistungsstarke H5 -Seiten auf, indem sie diese Technologien geschickt kombinieren, z. B. die Verwendung der & lt; canvas & gt; Tag, um Grafiken zu zeichnen oder JavaScript zu verwenden, um das Interaktionsverhalten zu steuern.

Der Text unter Flex -Layout wird weggelassen, aber der Behälter wird geöffnet? Wie löst ich es? Der Text unter Flex -Layout wird weggelassen, aber der Behälter wird geöffnet? Wie löst ich es? Apr 05, 2025 pm 11:00 PM

Das Problem der Containeröffnung aufgrund einer übermäßigen Auslassung von Text unter Flex -Layout und Lösungen werden verwendet ...

Wie verwendet ich das Clip-Pfad-Attribut von CSS, um den 45-Grad-Kurveneffekt des Segmenters zu erreichen? Wie verwendet ich das Clip-Pfad-Attribut von CSS, um den 45-Grad-Kurveneffekt des Segmenters zu erreichen? Apr 04, 2025 pm 11:45 PM

Wie kann man den 45-Grad-Kurveneffekt des Segmenters erreichen? Bei der Implementierung des Segmenters verwandeln Sie den rechten Rand in eine 45-Grad-Kurve, wenn Sie auf die linke Schaltfläche klicken, und der Punkt ...