JavaWeb学习记录🏃♂️🏃♂️🏃♂️🏃♂️🏃♂️✍✍✍✍✍👋👋👋👋👋
目录
一、MySQL部署与学习
https://downloads.mysql.com/archives/
1、MySQL下载(压缩包形式)
https://downloads.mysql.com/archives/community/
2、 MySQL配置文件
MySQL配置文件,打开解压的文件夹D:\MySQL\mysql-5.7.24-winx64 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# skip-grant-tables
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\MySQL\mysql-5.7.24-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
3、初始化数据库
以管理员身份打开 cmd 命令行工具,切换到bin目录;初始化数据库:
mysqld --initialize --console
输入以下安装命令:
mysqld install
启动输入以下命令即可:
net start mysql
4、登录MySQL
(如不记得密码可以再配置文件中通过越过权限进入后修改密码)
mysql -u root -p
5、MySQL相关管理与操作
查看MySQL服务器主机上的所有数据库:(不区分大小写)
show databases
查看某个数据库(mysql为例)中的所有表:
use mysql
show tables
其他MySQL查询操作命令可参考官网或https://www.runoob.com/mysql/mysql-tutorial.html
6、创建和删除数据库
在登陆 MySQL 服务后,使用 create 命令创建数据库:
CREATE DATABASE 数据库名
删除数据库:
drop DATABASE 数据库名
二、JDBC——“MySQL Connector/J”操作熟悉
JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API。
1、 在MySQL的官网下载支持程序“MySQL Connector/J”(MySQL官方的JDBC驱动程序)
https://downloads.mysql.com/archives/c-j/
2、 将下载的压缩包进行解压,在生成的文件中会有一个名为mysql-connector-java-8.0.28.jar的文件,将其复制粘贴到需要与MySQL连接的项目中的(新建的)lib文件夹下,并添加驱动程序路径:
3、 连接MySQL数据库,利用JDBC通过Java语言进行数据库相关操作:
JDBC快速入门步骤:
0.创建工程,导入驱动jar包
mysql-connector-java-5.1.48.jar
1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
2.获取连接
Connection conn = DriverManager.getConnection(url, username, password);
3.定义SQL语句
String sql = "“update...”";
4.获取执行SQL对象
Statement stmt = conn.createStatement();
5.执行SQL
stmt.executeUpdate(sql);
6.处理返回结果
7.释放资源
示例:
创建数据库表(Statement)
在之前创建的 myDB1030 数据库中创建数据库表:
public class JDBCdemo {
public static void main(String[] args) throws Exception {
// 1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.获取连接
String url = "jdbc:mysql://localhost:3306/myDB1030";
String username = "root";
String password = "123";
Connection conn = DriverManager.getConnection(url, username, password);
// 3.定义SQL
// --创建数据表
String sql ="CREATE TABLE mytable1(" +
"my_id INT NOT NULL AUTO_INCREMENT," +
"my_name VARCHAR(100) NOT NULL," +
"my_password VARCHAR(40) NOT NULL," +
"submission_date DATE," +
"PRIMARY KEY ( my_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8;"; //ENGINE 设置存储引擎,CHARSET 设置编码。
// 4.获取执行SQL的对象
Statement stmt = conn.createStatement();
// 5.执行SQL
boolean ct = stmt.execute(sql); //执行任何SQL语句,执行的语句有查询结果返回true
// int count = stmt.executeUpdate(sql); //执行更新语句,返回值为受影响的行数
// ResultSet rs = stmt.executeQuery(sql); //执行查询语句,返回查询结果对象
// 6.处理结果
System.out.println(ct);
System.out.println(conn);
// 7.释放资源
stmt.close();
}
}
查看创建结果:
向数据库表插入数据(PreparedStatement对象操作):
// --插入数据
String sql = "INSERT INTO mytable1(my_name,my_password,submission_date,email)"
+ "VALUES(?,?,?,?)";
// 1.创建执行SQL语句的PreparedStatement对象
PreparedStatement preStmt = null;
preStmt = conn.prepareStatement(sql);
// 2.为SQL语句中的参数赋值
preStmt.setString(1, "aaa");
preStmt.setString(2, "123456a");
long millis=System.currentTimeMillis();
java.sql.Date date=new java.sql.Date(millis);
preStmt.setDate(3, date);
preStmt.setString(4, "111@qq.com");
preStmt.executeUpdate();
查询数据库表结果集(ResultSet对象操作):
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/myDB1030";
String username = "root";
String password = "123";
//1.获取Connection对象
conn = DriverManager.getConnection(url, username, password);
String sql = "select * from mytable1";
//2.创建Statement对象并设置常量
stmt =conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//3.执行SQL并将获取的数据信息存放在ResultSet中
ResultSet rs = stmt.executeQuery(sql);
//4.取出ResultSet中指定数据的信息
System.out.print("第2条数据的name值为:");
rs.absolute(2); //将指针定位到结果集中第2行数据
System.out.println(rs.getString("my_name"));
System.out.print("第1条数据的name值为:");
rs.beforeFirst(); //将指针定位到结果集中第1行数据之前
rs.next(); //将指针向后滚动
System.out.println(rs.getString("my_name"));
System.out.print("第3条数据的name值为:");
rs.afterLast(); //将指针定位到结果集中最后一条数据之后
rs.previous(); //将指针向前滚动
System.out.println(rs.getString("my_name"));
用IDEA打开MySQL数据库表
https://blog.csdn.net/xiaocui1995/article/details/124227968
编写一个数据库连接类GetConnection.java
package com.example.WebGIS_1.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class GetConnection {
Connection conn = null;
public Connection getConnection() throws ClassNotFoundException {
String driver="com.mysql.cj.jdbc.Driver"; //驱动路径
String url = "jdbc:mysql://localhost:3306/数据库名";
String user = "root"; //用户名
String password = "123"; //密码
Class.forName(driver);
try {
conn = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
//返回Connection对象
return conn;
}
}
(写作servlet中用于用户名验证)执行查询语句核心代码:
Connection conn = null;
Statement st = null;
ResultSet rs = null;
PreparedStatement ptst = null;
//sql语句
String selectUsername = "select userName from users";
try {
//获取与数据库的链接
conn = new GetConnection().getConnection();
//遍历users表,将数据库中所有username存入集合中
st = conn.createStatement();
rs = st.executeQuery(selectUsername);
List<String> usernameList = new ArrayList<String>();
while (rs.next()) {
usernameList.add(rs.getString(1));
}
//关闭连接
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
//判断集合中是否存在所要登录的username
if (usernameList.contains(username)||username=="") {
out.print("1");
} else {
out.print("2");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭链接
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}