这两天在跟着学做一个人脸识别的小项目,是在IDEA上实现的,数据库用的是一个我以前没碰过的新东西,是阿里云的云数据库PolarDB。它是云原生关系型数据库,是阿里巴巴自主研发的下一代云原生关系型数据库,可兼容MySQL、PostgreSQL、高度兼容Oracle语法。
很明显了,作为渣渣的我,啥都不懂,就算是测试下连个数据库都会报错,还一直看不出毛病,今天又重新理了下,看了下,终于算是了解了,是我自己的毛病,傻眼了。还是记录下吧,顺便记录下自己的蠢。
其中我所用的DBUtil在这里,
package com.kaikeba.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class DBUtil {
private static String url;
private static String user;
private static String password;
static{
//加载配置文件
Properties ppt = new Properties();
InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
try {
//从配置文件中加载数据库地址,帐号,密码等信息
ppt.load(is);
url = ppt.getProperty("url");
user = ppt.getProperty("user");
password = ppt.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 用于链接数据库,得到的结果是数据库的连接对象,链接对象具备了操作数据库的很多功能。=
* @return 链接对象
*/
public static Connection getConn(){
//1. 获取数据库链接
try {
Connection conn = DriverManager.getConnection(url,user,password);
//3. 将链接返回给工具的使用者
return conn;
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
/**
* 断开数据库资源的链接,用于释放资源
* @param conn 要释放链接
* @param statement 要释放的执行环境
* @param resultSet 要释放的结果集
*/
public static void close(Connection conn, Statement statement, ResultSet resultSet){
if(conn != null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(statement != null){
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(resultSet != null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
先放张图,新建一个Web Application项目,里头东西是这些。
其中src中的util包不用管,我用来测试的只有那个test包,里头的程序也很简单,如下所示。
package com.kaikeba.test;
import com.kaikeba.util.DBUtil;
import java.sql.Connection;
public class Test1 {
public static void main(String[] args) {
Connection con=DBUtil.getConn();
}
}
其中db.properties是个配置文件,里面放的是链接到我的PolarDB的内容,包括url,用户名和密码。内容如下。
但我运行这个测试程序的时候,报错了,如下:
首先,先来明确下,在这个db的配置文件中,user和password不用多说了,就是你PolarDB创建高权限用户的账号和密码。
我划线画出来的,是放自己的集群地址的公网地址,下图中我划圈的地方,直接复制过去即可。
对了,在此之前,别忘记了把自己当前电脑的ip地址添加到集群白名单里,图里的左侧可以找到的。如果要搜自己电脑的ip,给个最简单的方法,直接浏览器输入ip搜索,即可找到自己的电脑对应的ip。
到这里都没问题的话,我的问题点出来了,就是第二张图里我圈出来的那里,它指的是此时你数据库里对应的某一个数据库库名。当我们登录这个云数据库时,它会默认给我们几个已有的数据库,每个都有自己的数据库名,当然你也可以在里头导入导出自己的数据。我的数据库名如图所示,
你在第二张圈里的数据库库名也只能是其中的一个,我之前没意识到,结果出错了。修改之后,保存。再运行,不报错,说明测试成功,已连接到数据库。