为了写tcp实验,把eclipse的编译环境变成jdk1.6,然后在与MySQL对接的过程中便出现了问题。
一些说明:MySQL版本为8.0.1(这个至关重要),可视化工具选用Navicat for MySQL,接下来以一个示例演示与数据库的对接过程。
新建一个数据表student,链接名称为localhost,数据库为text。该表含有3个字段:id(int),name(varchar),password(varchar)。相应sql语句如下:
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO student VALUES(1,'小明','123');
INSERT INTO student VALUES(2,'Marry','321');
SELECT*from student;
填写Web项目名称,因为Dynamic web module version版本为3.0,所以web.xml文件需要由自己手动生成,过程如下:
因为使用的是MySQL8.0.1的版本,所以数据库驱动程序必须也要是8.x版本,否则会因为驱动程序版本过低而无法实现与数据库的对接。如果MySQL的版本比较低,那么低版本的数据库驱动程序也是可以的,所以大家一定要注意自己数据库的版本与数据库驱动程序的版本是否符合。
在WebContent–>WEB-INF–>lib文件夹下放入数据库驱动程序(直接拖动即可)
然后右击选中,Build Path–>Add to Build Path
在这里我的正好是1.8版本的,所以就无需修改了(1.7版本的貌似也可以),版本过低的,就需要调一下编译器版本了版本。不会的话,可以参考下面这篇博文:
https://blog.csdn.net/z_forevers/article/details/83621942
public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//8.0以上版本的数据库,驱动器是com.mysql.cj.jdbc.Driver,而不是之前的com.mysql.jdbc.Driver
public static final String DB_URL = "jdbc:mysql://localhost:3306/text?useSSL=false&serverTimezone=UTC";
//8.0以上版本的数据库要在后面加上 ?useSSL=false&serverTimezone=UTC
//在这个语句中,localhost是数据库链接名称,3306是端口号,text是要访问的数据库
public static final String USER = "root";//数据库用户名
public static final String PASS = "****";//数据库密码
public static void main(String[] args) {
// TODO 自动生成的方法存根
Connection conn = null;
Statement stmt = null;
try {
//注册jdbc驱动
Class.forName(JDBC_DRIVER);
//打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//执行查询
System.out.println("实例化Statement...");
stmt = conn.createStatement();
String sql;
sql = "select*from student";//查询student数据表
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String pwd = rs.getString("password");
System.out.print("ID:"+id);
System.out.print(" name:"+name);
System.out.print(" password:"+pwd);
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(SQLException se) {
se.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(stmt!=null)stmt.close();
}catch(SQLException se2) {
}
try {
if(conn!=null)conn.close();
}catch(SQLException se) {
se.printStackTrace();
}
}
}
引用:https://blog.csdn.net/z_forevers/article/details/83621942