JavaWeb-0102-jsp、链接数据库

day1

jsp
设置项目的编码

​ 1)设置工作空间的编码格式
​ 2)设置JSP页面的编码格式

<!-- 表单 -->
		<form action="LoginServlet">  <!-- 账号密码会传入到这个servlet -->
			账号:<input type="text" name="username">
			<br><!-- 换行 -->
			密码:<input type="password" name="password">
			<br>
			<input type="submit" value="登录" >
		</form>
servlet
@WebServlet("/LoginServlet")//URL,访问该servlet的网址
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//用来处理客户端的Get请求
		//客户端向服务器申请了一个请求时,方法执行
		String username = request.getParameter("username");//请求获取一个叫username的参数
		String password = request.getParameter("password");
		
		//加入账号密码的验证
		response.getWriter().append(username).append(password);
		//writer字符输出流,追加
	}

day2

数据库的操作
创建数据库

数据库没有网络连接时,主机名或IP地址写127.0.0.1,设置成localhost无法连接。

varchar宽字符,可以存储中文。

账号长度一般为16或32。

java链接数据库

数据库驱动程序

​ 5.x MySQL:mysql-connector-java-5.1.46-bin.jar

​ 8.0 MySQL:mysql-connector-java-8.0.15.jar

Java提供访问数据库的标准JDBC,定义了数据库如何访问,没有具体实现。

一个类:DriverManager 驱动管理器

三个接口:

​ Connection:连接,负责连接数据库,在Java和数据库之间建立连接通道。

​ Statement:执行,向数据库发送SQL语句

​ ResultSet:结果集,接收SQL语句执行的结果

具体实现有数据库的厂商,数据库厂商对JDBC的实现为数据库驱动程序。

驱动程序加入到项目中

​ jar包拷贝到WebContent/WEB-INF/lib。

使用JDBC 访问数据库六部

1.加载驱动:把驱动程序中的类,加载到jvm

Class.forName("com.mysql.cj.jdbc.Driver");

2.创建连接对象:在Java与数据库之间建立连接

//8.0 不需要建立 SSL 连接的,需要显式关闭 useSSL=false
//需要设置 CST。也就是设置时区 serverTimezone=UTC
String url = "jdbc:mysql://127.0.0.1:3306/sk?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";//数据库连接字符串
String user = "root";//数据库账号
String pwd = "123456";
conn = DriverManager.getConnection(url, user, pwd);

3.创建执行对象:SQL语句的容器。

4.执行SQL语句:由执行对象向数据库发送SQL语句

5.处理返回结果:

6.释放资源

密码验证
//加入账号密码的验证
		UserDao userDao = new UserDao();
		
		//中文乱码解决
		response.setContentType("text/html; charset=UTF-8");
		if(userDao.select(username, password)) {
			//登录成功
			response.getWriter().append("登陆成功");
		}else {
			//登录失败
			response.getWriter().append("登录失败");
		}
数据库语法
  1. 插入

    insert into 表名 (字段列表) value (值)

    insert into user(username,password) value (‘jack’, ‘123’);

    1)如果要插入的是所有字段,字段列表可以省略,value后跟的值必须与数据表的字段顺序一致。

    2)不添加值的情况:

    ​ a) 自增主键

    ​ b) 字段可以为空

    ​ c) 具有默认值

  2. 删除

    delete from 表名 where 条件

  3. 修改

    update 表名 set 列名=‘值’,列名=‘值’ where 条件

  4. 查询

    简单查询

  • select * from 表

    ​ 别名

  • where 条件

    ​ 比较运算符:>,<,>=,<=,=,!=

    ​ 逻辑运算符:and, or, not

    ​ like 模糊查询,主要针对字符串

    ​ like ‘%tom%’ %代表任意字符

    ​ is null, is not null

    ​ in

  • group by 列名 分组 数据统计

    ​ 聚合函数

    ​ max() 最大值

    ​ min() 最小值

    ​ sum() 求和

    ​ avg() 平均值

    ​ count() 数量

  • having 条件

    ​ 1)having 在group by之后之执行,对分组后的数据进行条件筛选

    ​ 2)having后可以使用聚合函数, where不可以

  • order by 列名

    ​ 对查询结果进行排序,升序,降序

    ​ order by 列名 (asc 默认升序)

    ​ order by 列名 desc

    ​ order by 列名, 列名

SELECT * from user order by sex desc, username;
  • limit 起点,条数

    ​ 对查询记录进行截取,

    ​ limit N (条数) :从头取结果中的N条

    ​ limit M,N 从结果中的M条开始,取N条

SELECT * from user order by sex desc, username limit 1, 2;

子查询(嵌套)

连接查询(同时从多个表中查询数据)
select * from 表1,表2

SELECT * from user, photo
where user.id = photo.user_id
;
#笛卡尔乘积
  • 内连接
select * from `user`
inner join photo on user.id = photo.user_id
;
  • 左外连接 左表中的每一条记录都会显示,右表无记录,补空值。
  SELECT * from user 
    LEFT OUTER JOIN photo on `user`.id = photo.user_id
    ;
  • 右外连接 右表中的每一条记录都会显示,右表无记录,补空值。
 SELECT * from user 
    RIGHT OUTER JOIN photo on `user`.id = photo.user_id
    ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值