关于Java的JDBC链接MySQL数据库时遇到的问题(Sublime Text 3版本)
因为eclipse这个IDE对我的电脑及其不友好,干脆不用了。(一开始不知道在哪下的(忘记了)打开的时候都报错,然后要我查看日志文件(我当然看不懂),咳咳,我是Java的初学者,后来停了一段时间之间一直在用sublime,学到JDBC的时候要导入MySQL的驱动包,我当时不会在sublime上导入,于是又去下载eclipse)
这里先说一下一开始用eclipse时候遇见的问题,希望有会的大佬帮忙看看是怎么回事。
eclipse遇见的问题。
写import java.sql.;这个语句的时候报错,说the import java.sql can’t be resolved。
按照CSDN上各种解决方法,比如右键再点开build path的configure build path,把libraries里的jre system library remove掉再重新add library进来。以及project里的clean也一点用也没有。后来我发现了一个问题,把jre system library remove掉后,import其他的库依旧可以用,感觉eclipse用的并不是classpath里设置的jre system library 而是其他位置的,所以才一直用不了java.sql.?(在sublime里面java.sql.*是没问题的)。
sublime Text 3里导入mysql-connector-java-8.0.16.jar的方法。(直接上代码)
import java.sql.*;
import java.util.Properties;
import java.net.URL;
import java.net.URLClassLoader;
public class Sql1
{
private static Connection conn;
public static Connection getConn(String url,String user,String pass) throws Exception
{
if(conn==null)
{
URL[] urls={new URL(“file:mysql-connector-java-8.0.16.jar”)};
var myClassLoader = new URLClassLoader(urls);
var driver = (Driver) myClassLoader.loadClass(“com.mysql.jdbc.Driver”)
.getConstructor().newInstance();
var props = new Properties();
props.setProperty(“user”,user);
props.setProperty(“password”,pass);
conn=driver.connect(url,props);
}
return conn;
}
public static void main(String[] args) throws Exception
{
try (
Connection conn=getConn(“jdbc:mysql://127.0.0.1:3306/select_database?serverTimezone=UTC”,
“user”,“password”);
//select_database 选择的数据库的名字
//user 用户名
//password 密码
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“select * from wawa”);
)
{
System.out.println("-------------------");
while(rs.next())
{
System.out.println(rs.getInt(1)+"\t"+rs.getString(3)+"\t"+rs.getString(2));
}
}
}
}
这里用的是URLClassLoader类,java为ClassLoader提供了一个URLClassLoader实现类,
它可以从本地文件系统获取二进制文件来加载类(也可以从远程主机获取二进制文件来加载类)上面程序直接从文件系统中加载MySQL驱动,并使用该驱动来获取数据库连接。
注:该类加载器的类加载路径是当前路径下的mysql-connector-java-8.0.16.jar文件,将MySQL驱动复制到该路径下才可以正常加载到com.mysql.jdbc.Driver类。