(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
Java如何连接数据库?
下面使用Mysql8版本,编译器使用idea
一、获取Mysql数据库驱动文件(Driver)
下载链接:https://dev.mysql.com/downloads/connector/j/
下载完成得到一个压缩包,解压得到文件
需要的是文件里的.jar后缀文件
二、导入驱动
打开idea将驱动文件复制粘贴到工程项目下的lib文件下(如果没有自己创建)
然后右键驱动文件选择添加为库,点击进去点击确定
最后出现箭头可展开状态则成功
三、连接方式
代码实现上有五种连接数据库的方式。
方式五为最终方式。
1、方式一
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;
public class Connection1 {
public static void main(String[] args) throws SQLException {
//获取驱动,创建连接对象
Driver driver = new com.mysql.cj.jdbc.Driver();
//jdbc:mysql:协议
//localhost:ip地址
//3306:默认端口号
//test:数据库
String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
//将用户名和密码封装再Properties
Properties info = new Properties();
info.setProperty("user","root");//用户名
info.setProperty("password","ad");//密码
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
}
控制台出现这样的信息则表示成功。
2、方式二
方式二是对方式一方法的迭代,对一的改进
可以不出现第三方的api,使程序具有更好的可移植性。
import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;
public class Connection2{
public static void main(String[] args) throws Exception{
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","ad");
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
}
3、方式三
方式三是方式二的迭代
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
public class Connection3 {
public static void main(String[] args) throws Exception {
//获取对象
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//提供连接基本信息
String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
String user = "root";
String password = "ad";
//获取连接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
}
4、方式四
方式四是对方式三的优化。
Driver实现类里有个静态代码块,类加载时执行里面的代码块,即加载驱动时已经自动注册驱动。
import java.sql.Connection;
import java.sql.DriverManager;
public class Connection4 {
public static void main(String[] args) throws Exception {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//提供连接基本信息
String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
String user = "root";
String password = "ad";
//获取连接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
}
5、方式五(最终方式)
对前面的最终优化。
将数据库连接的四个基本信息声明在配置文件中,通过读取配置文件获取连接。
这样的好处是:
1、实现代码与数据分离
2、如需修改连接信息,可避免程序重新打包
Ⅰ、新建配置文件
在类下新建文件jdbc.properties;
将基本信息写入到文件中。
user=root
password=ad
url=jdbc:mysql://localhost:3306/zhangxiuyu
driverClass=com.mysql.cj.jdbc.Driver
Ⅱ、主类引入
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class Connection5 {
public static void main(String[] args) throws Exception {
//读取配置文件基本信息
InputStream is = Connection5.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//加载驱动
Class.forName(driverClass);
//获取连接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
}