工具及其版本:
-
虚拟机软件:VMWare
-
虚拟机操作系统:ubantu 16.04.7
-
数据库:SequoiaDB v5
-
开发工具:IDEA 2020.2.4
-
数据库远程连接:Navicat
设置虚拟机网络
在虚拟机处于关机状态下,在VMWare中选中目标虚拟机,右键并选择设置,进入设置界面
在虚拟机设置界面中,完成如下设置。使用NAT模式连接网络,点击确定
主机与虚拟机通信
确保主机和虚拟机可以ping通,这一步骤网上的教程很多,有问题的话可以查一查具体解决方法。
在主机的cmd中,用ipconfig/all命令查找ip地址,图中的IPv4一栏就是ip地址
在虚拟机的终端内,用ping + ip地址的命令与主机连接(按ctrl + C停止)
在虚拟机终端内,用ifconfig命令查询ip地址。显示内容的第二行(inet地址)就是虚拟机的ip地址
在主机的cmd内,同样用ping + IP地址的命令与虚拟机取得连接
在navicat中连接到虚拟机中的数据库
在确保主机与虚拟机可以通信之后,在navicat中新建连接。
巨杉数据库有许多实例可以进行连接,这里用的是Mysql实例;
这里的连接名可以随便取一个,主机一栏要填写上面查询到的虚拟机的ip地址,用户名和密码则是数据库的用户名与密码,设置的话可以在mysql上进行设置,具体设置方式可以参考Mysql的用户和密码的设置。
点击连接测试后,如果显示如下的连接成功,就说明虚拟机的数据库可以被主机连接到了。
navicat工具中可以看到可视化的数据图表,方便后面写java不断的测试和调试。
在Java程序中连接到SequoiaDB的Mysql实例
import java.io.FileInputStream;
import java.nio.file.Path;
import java.sql.*;
import java.io.*;
import java.util.ArrayList;
//属性
String databaseName="fileManager";//数据库名
String user = "root";//数据库用户账号
String pwd = "passwd";//数据库密码
String URL = "jdbc:mysql://192.168.88.130:3306/"+databaseName+"?useSSL=false&serverTimezone=UTC";//这里的ip地址需要设置成虚拟机的ip地址
String DRIVER = "com.mysql.cj.jdbc.Driver";
//上传文件功能
public String upload(String filetype, String name ,long size, String date,String path){
FileInputStream fis = null;
try{
//拿到指定路径下的本地文件
fis = new FileInputStream(path);
}
catch (IOException e){
e.printStackTrace();
}
Connection connection = null;
Statement statement = null;
//连接数据库
try {
//启动JDBC驱动
Class.forName(DRIVER);
//连接数据库
connection = DriverManager.getConnection(URL, user, pwd);
statement = connection.createStatement();
//mysql语句
String insert = "INSERT INTO "+filetype+ " (name,size,date,file) VALUES (?,?,?,?);";
//创建执行器
PreparedStatement ps = connection.prepareStatement(insert);
ps.setString(1,name);
ps.setLong(2,size);
ps.setString(3,date);
ps.setBlob(4,fis);
//插入数据
ps.executeUpdate();
ps.close();
connection.close();
fis.close();
}
//下面是异常处理
catch (SQLException | ClassNotFoundException | IOException e) {
e.printStackTrace();
}
finally {
try {
if (statement != null)statement.close();
if(connection!=null)connection.close();
}
catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return "上传成功";
}