Java、JDBC、MySQL数据库相关操作
JavaWeb学习记录🏃♂️🏃♂️🏃♂️🏃♂️🏃♂️✍✍✍✍✍👋👋👋👋👋
目录
-
- 一、MySQL部署与学习
-
-
- 1、MySQL下载(压缩包形式)
- 2、 MySQL配置文件
- 3、初始化数据库
- 4、登录MySQL
- 5、MySQL相关管理与操作
- 6、创建和删除数据库
-
- 二、JDBC——“MySQL Connector/J”操作熟悉
-
- 示例:
-
- 创建数据库表(Statement)
- 向数据库表插入数据(PreparedStatement对象操作):
- 查询数据库表结果集(ResultSet对象操作):
- 用IDEA打开MySQL数据库表
- 编写一个数据库连接类GetConnection.java
一、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.执行SQLboolean 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
IDEA新建一个javaweb项目
编写一个数据库连接类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();}//判断集合中是否存在所要登录的usernameif (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();}}}