Java提供JDBC(Java数据库连接),作为JavaSDK(软件开发工具包)的一部分。使用这个API,很容易连接到关系数据库,并执行查询、**、更新和删除记录等常见操作。
虽然核心jdbcapi包含在java中,但连接到MySQL或sqlserver等特定数据库需要一个称为数据库驱动程序的附加组件。这个数据库驱动程序是一个软件组件,它将核心JDBC调用转换为该数据库所理解的格式。
在本文中,让我们看看连接到MySQL数据库的详细信息以及如何使用它执行一些查询。
如上所述,为了能够连接到MySQL数据库,您需要MySQL的JDBC驱动程序。这称为Connector/J驱动程序,可以从MySQL站点下载。
下载ZIP(或焦油.GZ)文件,提取归档文件并复制JAR文件mysql connector java--bin.jar文件去一个合适的地方。运行任何使用MySQL JDBC驱动程序的代码都需要这个文件。
假设您已经下载了MySQL数据库,并在您可以访问的地方正确设置它,那么让我们创建一个示例数据库,以便我们可以使用它来连接和执行查询。
使用您选择的客户机连接到数据库,并运行以下语句来创建示例数据库。
create database sample;
我们还需要一个用户名和密码才能连接到数据库(除非您想作为管理员连接,这通常是个坏主意)。
下面创建一个名为testuser的用户,该用户将使用securepwd密码从运行MySQL数据库的同一台计算机(由localhost指示)连接到该数据库。
create user 'testuser'@'localhost' identified by 'securepwd';
如果要连接到另一台计算机(名为remotemc)上运行的数据库,则需要使用以下命令(remotemc可以是主机名或ip地址):
create user 'testuser'@'remotemc' identified by 'securepwd';
现在已经创建了用户名和密码,我们需要授予对前面创建的示例数据库的访问权。
grant all on sample.* to 'testuser'@'localhost';
或者,如果数据库是远程的:
grant all on sample.* to 'testuser'@'remotemc';
现在,您应该验证是否可以使用相同的密码作为刚刚创建的用户连接到数据库。您还可以在连接后运行以下命令,以确保所有权限都正确。
create table joe(id int primary key auto_increment, name varchar(25));
drop table joe;
现在让我们详细了解如何从Java连接到MySQL。第一步是加载数据库驱动程序。这是通过在适当的位置调用以下命令来实现的。
Class.forName("com.mysql.jdbc.Driver");
代码可能抛出异常,因此如果您打算处理它(例如格式化GUI的错误消息),就可以捕获它。
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
// use the exception here
}
在类中的静态块中调用此代码是非常常见的,因此如果无法加载驱动程序,程序将立即失败。
public class Sample
{
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
System.err.println("Unable to load MySQL Driver");
}
}
}
当然,为了能够找到驱动程序,必须使用类路径中包含的驱动程序JAR(上面下载并提取)来调用程序,如下所示。
java -cp mysql-connector-java-<version>-bin.jar:... <class to run>
现在我们已经解决了从java加载MySQL驱动程序的细节,让我们开始连接数据库。创建数据库连接的一种方法是使用DriverManager。
String jdbcUrl = ...;
Connection con = DriverManager.getConnection(jdbcUrl);
什么是jdbcUrl?它表示连接的详细信息,包括数据库所在的服务器、用户名等。下面是我们示例的示例URL。
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";
注意,我们已经包含了连接所需的所有参数,包括主机名(localhost)、用户名和密码。(包括这样的密码不是一个好的做法,请参阅下面的替代方法。)
使用这个jdbcUrl,这里有一个完整的程序来检查连接。
public class Sample
{
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
System.err.println("Unable to load MySQL Driver");
}
}
static public void main(String[] args) throws Exception
{
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd";
Connection con = DriverManager.getConnection(jdbcUrl);
System.out.println("Connected!");
con.close();
}
}
请注意,数据库连接是程序中的宝贵资源,必须如上所述正确关闭。但是,如果出现异常,上面的代码不会关闭连接。要在正常或异常出口关闭连接,请使用以下模式:
try(Connection con = DriverManager.getConnection(jdbcUrl)) {
System.out.println("Connected!");
}
如上所述,将密码嵌入到JDBC URL中是一个坏主意。要直接指定用户名和密码,可以使用以下连接选项。
String jdbcUrl = "jdbc:mysql://localhost/sample";
try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) {
}
现在已经建立了到数据库的连接,让我们看看如何执行查询,例如查询数据库版本:
select version();
在java中执行一个查询,如下所示。使用返回结果集的executeQuery()方法创建语句对象并执行查询。
String queryString = "select version()";
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(queryString);
打印结果集的版本,如下所示。1表示结果中列的索引,从1开始。
while ( rset.next()) {
System.out.println("Version: " + rset.getString(1));
}
处理结果后,需要关闭对象。
rset.close();
stmt.close();
这涵盖了从java连接到MySQL并执行简单查询的所有内容。
还可以查看我们的SQL命令备忘单。
关键区别–sql与mysql 数据库是数据的集合。有各种类型的数据库。关系数据库是以表的形式存储数据的数据库类型。这些表是相互关联的,因为它们使用约束。MySQL是一个关系数据库管理系统。用于对数据库执行操作的语言称...
...异常时,Java应用程序连接到外部资源,如文件、设备或数据库。这些异常由编译器检查。检查的异常的一些示例包括IO异常和FileNotFound异常。当发生未检查的异常时,应用程序不会连接到任何外部资源。编译器不检查这些异常。...
...用程序提供了一个全面的编程和配置模型。Hibernate用于与数据库交互。它是一个将Java对象转换为数据库表的对象关系映射(ORM)框架。它允许程序员避免不熟悉的SQL类型,并使用熟悉的Java对象。Spring和Hibernate的主要区别在于Spri...
如果您经常编写连接到数据库服务器的应用程序,那么如果您知道如何在Windows机器上安装MySQL数据库以进行测试,这会有所帮助。 ...
Arduinos和类似的兼容板是各地DIY修补匠的首选设备之一。无论你是一个刚开始使用Arduino的初学者,还是一个已经在你的生活中使用Arduino的人,它们都为无数令人敬畏的项目提供了一个平台。 ...
循环是非常强大的编程工具,它将完成一组指令,直到满足一个条件。它们非常方便,应该是您首先学习的编程概念之一。有许多不同类型的循环,但是for循环可以说是最有用的循环之一。 ...
...。 输入MySQL root帐户的密码,这是创建其他用户和管理数据库所需的密码,然后按Enter键继续。系统将提示您重新输入密码,请执行此操作并再次按enter键。 安装就这样! 测试apache和php 让我们测试Apache,看看它是否正常工作。...
...传感器检查不同房间的温度,然后收集所有的数据到MySQL数据库。所有这些数据都存储在网上,他可以监控所有的东西,然后也会使用旧的iPhone4作为显示屏显示在家里。这绝非一个简单的项目,但你可以找到指南,让你自己在诺...
...时间内解决问题。 此外,它更容易与MySQL、MSSQL和SQLite等数据库集成。此外,它还允许开发图形用户界面(gui)。此外,它还支持多线程。 java与python的相似之处 两者都是高级通用编程语言。 程序员可以很容易地下载和安装这...