一、JDBC,全称是Java Database Connectivity(Java数据库连接)
- 在Java中用来规范访问关系型数据库,由各大数据库厂商去实现它
- 属于JavaSE的一部分
首先要下载MySQL的JDBC实现(jar、驱动包) ,下载地址点我
根据需求下载后解压,本项目下载5.1.49版本如下:
然后新建一个普通的java项目,起名JDBC_01,创建一个main类,类中创建main方法,在主目录下创建lib文件夹,将上图尖头所示的jar包拷贝进lib文件夹。然后右击如下图add as Library,然后弹窗选择 Module Library即可。
以下是连接数据库的步骤:
public static void main(String[] args) throws Exception {
// 1、将Driver(驱动程序) 注册到 DriverManager 从JDBC4.0开始,下面这行代码自动检测注入,可以注掉
// Class.forName("com.mysql.jdbc.Driver"); // 装载这个类,就会调用内部静态构造方法
//2、利用DriverManager 创建数据库链接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/crm","root","123456");
//3、利用Connection 创建Statement
Statement statement = conn.createStatement();
//4、利用Statement执行SQL语句
statement.executeUpdate("UPDATE customer SET age = 100 WHERE id = 2");
//5、关闭资源
statement.close();
conn.close();
}
更改后如下图:
以下是SQL注入问题:
- Statement SQL注入问题无法解决
- PreparedStatement 能解决SQL注入问题,并且速度更快
private static final String URL = "jdbc:mysql://localhost:3306/crm";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
public static void main(String[] args) throws Exception {
// login1 createStatement的 SQL注入问题无法解决
// login2 preparedStatement 能解决SQL注入问题,并且速度更快
String username = "";
String password = "'OR '1' = '1";
login1(username, password);
login2(username,password);
}
private static void login2(String username, String password) throws Exception {
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
try ( Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
PreparedStatement preparedStatement = conn.prepareStatement(sql)){ //编译、解析、优化
// 设置参数
preparedStatement.setString(1,username);
preparedStatement.setString(2,password);
// 执行SQL语句
ResultSet resultSet = preparedStatement.executeQuery(); //执行
if (resultSet.next()) {
System.out.println("login2登录成功");
} else {
System.out.println("login2登录失败,用户名或者密码错误");
}
resultSet.close();
}
}
private static void login1(String username, String password) throws Exception {
//2、利用DriverManager 创建数据库链接
Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
//3、利用Connection 创建Statement
Statement statement = conn.createStatement();
//4、利用Statement执行SQL语句
String sql = "SELECT * FROM user WHERE username = '"+username+"' AND password = '"+password+"'";
System.out.println(sql);
ResultSet resultSet = statement.executeQuery(sql); //编译、解析、优化、执行
if (resultSet.next()) {
System.out.println("login1登录成功");
} else {
System.out.println("login1登录失败,用户名或者密码错误");
}
//5、关闭资源
resultSet.close();
statement.close();
conn.close();
}
下图是个小例子:
注意勾选下图所示:
复制粘贴的javeEE工程怎么打开(两种方式):
第一种:
1、更改工程名字,更改工程中的.iml文件名字
2、用开发工具IDEA打开
3、凡是遇到这个的选择箭头所示如下图:
4、然后弹出后选择如下图即可:
5、然后就可以在tomcat配置中选择此项目了;
第二种打开方式:
1、依然要更改名字和.iml名字
2、直接用.iml打开即可
3、然后类似上述配置
以上,祝玩的愉快!