1、引言
在系统的学习了 Java SE 之后,我们知道要想保存或读取数据,需要使用二进制IO对文本进行序列化,反序列化。重复的创建文件使得文件不易于管理且数据重复,相对繁琐且效率低下。因此需要Java需要连接到数据库来实现对数据的访问和存储。
这里我们需要先了解Java与MySQL的基本连接、什么是jdbc,到后面我们还需要了解数据库连接池以及jdbctemplate的使用。
所谓jdbc,即Java DataBase Connectivity,使用Java语言操作数据库。本质其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2、下载
(1)直接点击进入下载页面
MySQL :: Download Connector/Jhttps://dev.mysql.com/downloads/connector/j/
(2)选择Platform Independent,如果是Windows操作系统就选择下面那个ZIP Archive结尾的。
(3)选择下方No thanks,just start my download.
3、环境配置
(1)解压好以后,复制my-sql-connector-java-8.0.26.jar(不同版本可能位置不一样,找到类似的jar包即可)到项目底下。
(2)右键点击Add As Library... , 当然你可以创建lib文件夹直接将以后所有的包都放进来,然后把lib添加到Library中。
(3)在idea的右边栏选择database,“+”,选择MySQL
(4)添加数据库信息并测试
输入“Name”(随便取一个名字),“User”,“Password”,然后点击下方的“Test Connection”测试能否可以成功连接数据库,若出现“Success”则说明可以连接。
4、编写代码测试
(1)先查看数据库已有的表
(2)复制代码查询
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) throws Exception{
//注册驱动
// Class.forName("com.mysql.jdbc.Driver"); //JDBC5之后可以不用注册驱动
//获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","root");
//定义sql语句
String sql = "select * from db1.emp";
//获取执行sql的对象Statement
Statement stmt = conn.createStatement();
//执行sql
ResultSet resultSet = stmt.executeQuery(sql);
//处理结果
while(resultSet.next()) { //让游标移动到下一行,true 表示有数据行,可以到下一行
int id = resultSet.getInt(1); //获取id
String name = resultSet.getString("ename"); //获取姓名
System.out.println("id:" + id + " name:" + name);
}
//释放资源
stmt.close();
conn.close();
}
}
这里用到的几个对象做一下简单的介绍:
1、DriverManager:驱动管理器(注册驱动,获取数据库连接)
获取数据库连接对象:DriverManager.getConnection(String url,String user,String password);
url语法:jdbc:mysql://ip地址(域名):端口号/数据库名称(若为主机,ip地址和端口号可以不写)
2、Connection:数据库连接对象
功能:(1)获取sql对象:Statement createStatement();
PreparedStatement preparedStatement(String sql);
(2)管理事务:开启事务:setAutoCommit(boolean autoCommit):调用方法设置参数为false,即开启事务
提交事务;commit();
回滚事务:rollback();
3、Statement:执行sql数据库
获取sql的对象:
boolean execute(String sql); 可以执行任意的sql (了解)
int executeUpdate(String sql); 执行DML(insert,update,delete)、DDL(create,alter,drop)语句返回值影响行数,通过行数判断是否执行成功
ResultSet executeQuery(String sql); 执行DDL(select)语句
4、ResultSet:结果集对象
next(); 游标向下一定一行
getXxx(); 获取数据,如:getInt(),getDouble(); 代表列的数据类型
参数:int 如getString(1); 代表列的编号
String 如 getDouble("balance"); 代表列的名称
点击运行就能正常输出数据库的信息了。
(3)注意事项
1.JDBC5之后可以不用注册驱动,不写也行
2.如果不能正常显示中文,在 jdbc:mysql://localhost:3306/××× 的l后面添加“?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8”即可
3.如果出现“No suitable driver found for jdbc:mysql://localhost:3306/×××”的报错信息,注意看是否成功导入了mysql的jar包,即3(2)这一步。如果反复导入都不行,打开“Project Structure...”
选择 Modules --> 你的项目(mysql) --> Dependencies --> + ,选择已下载的mysql的jar包,导入即可。