一定要按照规范来,不然出错了都很难发现。比如以下实例:
如果把mysql-connector-java-5.1.32.jar包放在如下图的红方框位置,就会出现这个异常java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
目前还不知道为啥,本来ssm项目的pom文件引用坐标就会idea下载ar包后放在那个红方框位置的,为啥基础的还识别不了呢?
还有就是,我通过测试类来检测过得,实际上测试类没问题的。
不解!
测试类如下:
import org.junit.Test;
import java.sql.*;
public class TestAll {
/**
* 测试testprepareStatement(),查询
*/
@Test
public void testPrepareStatement(){
//mysql驱动类
String driverClass = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/me";
String username = "root";
String password = "";
//数据库连接接口
Connection conn = null;
//执行sql语句的接口
PreparedStatement prst = null;
ResultSet rs = null;
//操作数据库返回的查询结果的接口
try {
//加载驱动类到虚拟机
Class.forName ( driverClass );
//连接数据库
conn = DriverManager.getConnection (url,username,password);//url地址,username,password
String sql = "select * from t_user where uid = 1";
//创建语句对象
prst = conn.prepareStatement ( sql ); //功能是执行sql语句
rs = prst.executeQuery ( );
//拿到查询的结果集 错误语法prst.executeQuery ( sql);应为在准备阶段已经将sql语句给了prepareStatement对象
//操作
while (rs.next ()){
//取列的值
System.out.print (rs.getString ( "username" )+", ");
System.out.println (rs.getString ( "password" ));
}
} catch (Exception e) {
e.printStackTrace ();
}finally {
//关闭这些对象,是为了释放资源
try {
if (prst != null)
prst.close ();
if (conn != null)
conn.close ();
} catch (SQLException e) {
e.printStackTrace ();
}
}
}
}
运行结果:
然后是去掉 那儿的mysql-connector-java-5.1.32.jar,放在WEB-INF下:
运行结果:
对比结果,有没有啥发现呢?