配置JDK12
官网下载链接:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
jdk12不会自动安装jre,在安装目录下打开cmd运行:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre 手动生成jre
cmd 配置环境变量
set JAVA_HOME=C:\Java\jdk-12.0.1
set PATH=%PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
cmd修改注册表(set指令对环境变量的修改是临时性的,继续修改注册表可以实现持久性的修改)
set RegV=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
reg add "%RegV%" /v "JAVA_HOME" /d "%JAVA_HOME%" /f
reg add "%RegV%" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f
reg add "%RegV%" /v "CLASSPATH" /d "%CLASSPATH%" /f
Access数据库连接
创建access数据库shop.accdb,并建立goods表。
问题:
打开“ODBC数据源管理器”窗口,添加的时候却发现窗口中只有“SQL Server”的驱动程序,没有access的!
解答:
access数据库驱动程序是32位的,应该打开32位的“ODBC数据源管理器”,打开目录:“C:\Windows\SysWOW64”,双击该目录下的“odbcad32.exe”文件,就进去ODBC数据源管理界面了,现在这个界面中就有access的驱动了!
相关代码:
import java.sql
public class JDBCtest{
public static void main(String args[]){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException){
System.out.print(e);
}
try{
con = DriverManager.getConnection("jdbc:odbc:myData","","")
sql = con.createStatement();
rs = sql.executeQuery("SELECT * FROM goods WHERE price >300000");
while(rs.next()){
String number = rs.getString(1);
String name = rs.getString(2);
Date date = rs.getDate("madeTime");
double price = rs.getDouble("price");
System.out.printf("%-4s,%-6s,%-15s%,%6s/n",number,name,date.toString(),prince);
}
con.close();
}
catch(SQLException e) {
System.out.println(e);
}
}
}
问题:
Class.forName()方法的作用?
解答:
https://blog.youkuaiyun.com/qq_36776216/article/details/80302640
问题:
解释器运行报错, 未能找到驱动类
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriverjava.sql.SQLExcept
ion: No suitable driver found for jdbc:odbc:myData
解答:
jdk8以上都抛弃了通过ODBC进行数据库桥接,可以考虑JDBC直连数据库。
(参考https://blog.youkuaiyun.com/ljheee/article/details/51290702)
下载Access_JDBC30.jar,添加到jdk目录下的lib文件夹。
将代码修改如下:
import java.sql.*;
public class JDBCtest{
public static void main(String args[]){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("com.hxtt.sql.access.AccessDriver");
}
catch(ClassNotFoundException e){
System.out.print(e);
}
try{
String dbpath="C:/Users/wugx/Desktop/Java/code/JDBC/shop.accdb";//修改成你自己的access数据库文件路径
con = DriverManager.getConnection("jdbc:Access:///"+dbpath,"","");
sql = con.createStatement();
rs = sql.executeQuery("SELECT * FROM goods WHERE price > "+args[0]);
while(rs.next()){
String number = rs.getString(1);
String name = rs.getString(2);
Date date = rs.getDate("madeTime");
double price = rs.getDouble("price");
System.out.printf("%-4s, %-6s, %-15s, %6s\n",number,name,date.toString(),price);
//System.out.printf("price:%6s\n",price);
}
con.close();
}
catch(SQLException e) {
System.out.println(e);
}
}
}
编译运行成功!