2021-07-16
作者:互联网
封装jdbc的驱动加载、连接、关闭
package cn.tedu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 工具类,封装jdbc的驱动加载、连接、关闭
*/
public class jdbcUtil {
//成员变量
private static String className = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/tedu_store?useUnicode=true&characterEncoding=utf-8";
private static String user = "root";
private static String password = "123456";
/**
* 加载驱动
*/
static {
try{
Class.forName(className);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 创建连接
*/
public static Connection getConn() throws SQLException {
Connection conn = DriverManager.getConnection(url,user,password);
return conn;
}
/**
* 关闭连接
*/
public static void release(Connection conn){
if(conn != null){
try {
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) throws SQLException {
Connection conn = jdbcUtil.getConn();
System.out.println(conn);
}
}
模拟商城登录功能
package cn.tedu.jdbc.jdbc;
import cn.tedu.jdbc.util.jdbcUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 模拟商城登录功能
*/
public class Demo01 {
public static void main(String[] args) {
Connection conn = null;
try {
//驱动加载,建立连接
conn = jdbcUtil.getConn();
//2.SQL
String sql = "SELECT *FROM tedu_user where username = '木木子'";
Statement st = conn.createStatement();
//3.返回结果集对象
ResultSet rs = st.executeQuery(sql);
//4.处理结果集
if (rs.next()){
System.out.println("登陆成功!跳转到首页。");
}else {
System.out.println("用户名或密码错误,请联系管理员!");
}
}catch (SQLException throwables) {
throwables.printStackTrace();
}finally {//总会执行!!!
//5.关闭连接
jdbcUtil.release(conn);
}
}
}
在模拟基础上增加类似于浏览器输入用户名与密码的功能
package cn.tedu.jdbc.jdbc;
import cn.tedu.jdbc.util.JdbcUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/**
* 模拟商城登录功能
*/
public class Demo01 {
public static void main(String[] args) {
//类似于在浏览器输入用户名与密码
Scanner sc = new Scanner(System.in);
System.out.println("用户名:");
String username = sc.nextLine();
System.out.println("密码:");
String password = sc.nextLine();
Connection conn = null;
try {
//驱动加载,建立连接
conn = JdbcUtil.getConn();
//2.SQL
String sql = "SELECT *FROM tedu_user where username ='"+username+"'and password ='"+password+"'";
Statement st = conn.createStatement();
//3.返回结果集对象
ResultSet rs = st.executeQuery(sql);
//4.处理结果集
if (rs.next()){
System.out.println("登陆成功!跳转到首页。");
}else {
System.out.println("用户名或密码错误,请联系管理员!");
}
}catch (SQLException throwables) {
throwables.printStackTrace();
}finally {//总会执行!!!
//5.关闭连接
JdbcUtil.release(conn);
}
}
}
关于上面代码不安全性问题
- PrepareStatement
- 预处理语句对象,是Statement的子类
- 1)作用:
- 可以避免SQL注入攻击:由于用户输入改变了程序中SQL语句的本意
- 提高SQL语句在程序中的可读性
- 提高jdbc中同一条SQL语句(装载参数)多次执行的效率
- 2)使用:
- 使用占位符? 在SQL语句需要拼接的时候
- delete form tedu_user where id =?
- 实例化:conn.prepareStatement(sql);
- 装载占位符:?
- setXXX(int index,XXX value);
-
占位符的索引从1开始,第一个问号占位符就是1
- 执行SQL语句
package cn.tedu.jdbc.jdbc;
import cn.tedu.jdbc.util.JdbcUtil;
import java.sql.*;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("用户名:");
String username = sc.nextLine();
System.out.println("密码:");
String password = sc.nextLine();
Connection conn = null;
try {
conn = JdbcUtil.getConn();
String sql = "SELECT * FROM tedu_user WHERE username=? AND password=?";//此修改问号
PreparedStatement ps = conn.prepareStatement(sql);//prepareStatement();
//装载占位符
ps.setString(1,username);
ps.setString(2,password);
Statement st = conn.createStatement();
ResultSet rs = ps.executeQuery();//这里调用啥改为啥
if (rs.next()){
System.out.println("登陆成功!跳转到首页。");
}else {
System.out.println("用户名或密码错误,请联系管理员!");
}
}catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtil.release(conn);
}
}
}
项目中JDBC实现:
1、账号管理模块
*注册
*登录
*修改密码
*修改手机号、邮箱
*查询账号是否被占用
*查询邮箱是否已经存在
*查询手机号是否已经存在
2、地址管理模块
*保存地址
*设置地址是否为默认的地址
*查询登录账号的地址信息
*修改地址
*删除地址
3、购物车管理模块
*查询登录账号中购物车的信息
*修改购物车中某条信息包含的商品数量
*删除一条购物车中商品的信息
*删除多条购物车中商品的信息
*查询用户选择的商品在购物车中是否存在
*添加购物车中商品的信息
4、订单管理模块
*分页查询订单
5、收藏夹模块
*添加商品信息到收藏夹
*查询收藏夹中的商品
*删除收藏夹中的商品
6、定位模块
*百度地图 / 高德地图 / 腾讯地图 查看API学习
实体类 User
建包:
*cn.tedu.shopping.entity
*cn.tedu.shopping.dao
*cn.tedu.shopping.util
开发思路:
根据数据库表,开发实体类对象
根据页面功能,开发Dao
测试Dao
企业开发
- 设计岗:UI / UE / UX 设计、平面设计岗
- 前端开发:web html+css+js vue等框架
-
微信小程序
-
web前端工程师
- 后端开发:java python php
-
后端开发工程师
//未写完
标签:java,07,16,2021,sql,import,tedu,conn,String 来源: https://blog.csdn.net/qq_45799253/article/details/118784726