Java与Mysql基础应用
确保已有java jdk
确保已安装mysql
1.百度搜索 mysql-connector-java-8.0.21.jar 并下载
2.在项目中创建lib文件夹并放入 mysql-connector-java-8.0.21.jar
3.右键 mysql-connector-java-8.0.21.jar =>Build Path=>Add to Build Path
Java获取Mysql数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MainTest {
public static void main(String[] args) {
// 声明Connection对象
Connection con;
// 驱动程序名
String driver = "com.mysql.cj.jdbc.Driver";
// URL指向要访问的数据库名 test
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "********";
// 遍历查询结果集
try {
// 加载驱动程序
Class.forName(driver);//此驱动程序在4.0版本后可不在加载 不加载也可正常使用
//静态代码块--->类加载,就执行 为防二次注册 推荐使用Class.forName加载驱动
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed())//判断是否成功连接
System.out.println("ntt成功以 " + user + " 身份连接到数据库!!!");
// 2.创建statement类对象,用来执行SQL语句!!
Statement st = con.createStatement();
// 要执行的SQL语句
String sql = "select * from author";
// 3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = st.executeQuery(sql);
int ID = 0;
String Name = null;
String Sex = null;
int Age = 0;
System.out.println("ntt执行结果如下所示:");
System.out.println("tt-----------------------------------------------------------------");
System.out.println("tt|t" + "ID" + "t" + "姓名" + "tt" + "性别" + "t" + "年龄t|");
System.out.println("tt-----------------------------------------------------------------");
while (rs.next()) {//4.遍历查询
// 获取 ID 这列数据
ID = rs.getInt("id");
// 获取 Name 这列数据
Name = rs.getString("author");
// 获取 Sex 这列数据
Sex = rs.getString("sex");
// 获取 Age 这列数据
Age = rs.getInt("age");
// 输出结果
System.out.println("tt|t" + ID + "t" + Name + "tt" + Sex + "t" + Age + "t|tt");
}
System.out.println("tt-----------------------------------------------------------------");
rs.close();//5.释放资源
st.close();
con.close();
}
catch (ClassNotFoundException e) {
// 数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
System.out.println("tttttttt获取数据库数据完毕!!!");
}
}
}
运行结果:
成功以 root 身份连接到数据库!!!
执行结果如下所示:
-----------------------------------------------------------------
| ID 姓名 性别 年龄 |
-----------------------------------------------------------------
| 1 yj man 22 |
| 2 迪丽热巴 girl 18 |
| 3 阿巴阿巴 pig 1 |
-----------------------------------------------------------------
获取数据库数据完毕!!!
优化释放资源 close
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUti {
public static void main(String[] args) {
// 声明Connection对象
Connection con = null;
// 驱动程序名
String driver = "com.mysql.cj.jdbc.Driver";
// URL指向要访问的数据库名 test
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "********";
// 声明Statement对象 用来执行SQL语句
Statement st = null;
// 声明ResultSet对象 ResultSet类,用来存放获取的结果集!!
ResultSet rs = null;
// 遍历查询结果集
try {
// 加载驱动程序
Class.forName(driver);
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed())//判断是否成功连接
System.out.println("ntt成功以 " + user + " 身份连接到数据库!!!");
// 2.创建statement类对象,用来执行SQL语句!!
st = con.createStatement();
// 要执行的SQL语句
String sql = "select * from author";
// 3.ResultSet类,用来存放获取的结果集!!
rs = st.executeQuery(sql);
int ID = 0;
String Name = null;
String Sex = null;
int Age = 0;
System.out.println("ntt执行结果如下所示:");
System.out.println("tt-----------------------------------------------------------------");
System.out.println("tt|t" + "ID" + "t" + "姓名" + "tt" + "性别" + "t" + "年龄t|");
System.out.println("tt-----------------------------------------------------------------");
while (rs.next()) {//4.遍历查询
// 获取 ID 这列数据
ID = rs.getInt("id");
// 获取 Name 这列数据
Name = rs.getString("author");
// 获取 Sex 这列数据
Sex = rs.getString("sex");
// 获取 Age 这列数据
Age = rs.getInt("age");
// 输出结果
System.out.println("tt|t" + ID + "t" + Name + "tt" + Sex + "t" + Age + "t|tt");
}
System.out.println("tt-----------------------------------------------------------------");
}
catch (ClassNotFoundException e) {
// 数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
//5.优化释放资源
JDBCUtil.release(con, st, rs);
System.out.println("tttttttt获取数据库数据完毕!!!");
}
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 关闭的封装
*/
public class JDBCUtil {
public static void release(Connection con,Statement st,ResultSet rs) {
closeRs(rs);
closeSt(st);
closeConn(con);
}
private static void closeRs(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
rs = null;
}
}
private static void closeSt(Statement st) {
try {
if(st != null) {
st.close();
}
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
st = null;
}
}
private static void closeConn(Connection con) {
try {
if(con != null) {
con.close();
}
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
con = null;
}
}
}
优化连接对象
import java.io.ObjectInputStream.GetField;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class JDBC{
public static Connection getCon() {//获取连接对象
// 声明Connection对象
Connection con = null;
// 驱动程序名
String driver = "com.mysql.cj.jdbc.Driver";
// URL指向要访问的数据库名 test
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "********";
try {
// 加载驱动程序
Class.forName(driver);
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
}
public class Demo1 {
public static void main(String[] args) {
// 声明Connection对象
Connection con = null;
// 声明Statement对象 用来执行SQL语句
Statement st = null;
// 声明ResultSet对象 ResultSet类,用来存放获取的结果集!!
ResultSet rs = null;
// 遍历查询结果集
try {
con = JDBC.getCon();
if (!con.isClosed())//判断是否成功连接
System.out.println("ntt成功连接到数据库!!!");
// 2.创建statement类对象,用来执行SQL语句!!
st = con.createStatement();
// 要执行的SQL语句
String sql = "select * from author";
// 3.ResultSet类,用来存放获取的结果集!!
rs = st.executeQuery(sql);
int ID = 0;
String Name = null;
String Sex = null;
int Age = 0;
System.out.println("ntt执行结果如下所示:");
System.out.println("tt-----------------------------------------------------------------");
System.out.println("tt|t" + "ID" + "t" + "姓名" + "tt" + "性别" + "t" + "年龄t|");
System.out.println("tt-----------------------------------------------------------------");
while (rs.next()) {//4.遍历查询
// 获取 ID 这列数据
ID = rs.getInt("id");
// 获取 Name 这列数据
Name = rs.getString("author");
// 获取 Sex 这列数据
Sex = rs.getString("sex");
// 获取 Age 这列数据
Age = rs.getInt("age");
// 输出结果
System.out.println("tt|t" + ID + "t" + Name + "tt" + Sex + "t" + Age + "t|tt");
}
System.out.println("tt-----------------------------------------------------------------");
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
//5.释放资源
JDBCUtil.release(con, st, rs);
System.out.println("tttttttt获取数据库数据完毕!!!");
}
}
}
配置文件 properties
1.在src下声明jdbc.properties文件
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false
user=root
password=xxxxxxxx
2.在工具类中使用静态代码块读取属性
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import com.test.JDBCUtil;
/*
*使用配置文件
*/
class JDBC{
// 声明Connection对象
static Connection con = null;
// 驱动程序名
static String driver = null;
// URL指向要访问的数据库名 test
static String url = null;
// MySQL配置时的用户名
static String user = null;
// MySQL配置时的密码
static String password = null;
static {
try {
//创建一个属性配置对象
Properties properties = new Properties();
//InputStream is = new FileInputStream("jdbc.properties");//放项目根目录下则可使用 如放在src下则报错未找到
//使用类加载器,读取src底下的资源文件
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//导入输入流
properties.load(is);
//读取属性
driver = properties.getProperty("driverClass");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getCon() {//获取连接对象
try {
// 加载驱动程序
Class.forName(driver);
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
}
public class Demo2 {
public static void main(String[] args) {
// 声明Connection对象
Connection con = null;
// 声明Statement对象 用来执行SQL语句
Statement st = null;
// 声明ResultSet对象 ResultSet类,用来存放获取的结果集!!
ResultSet rs = null;
// 遍历查询结果集
try {
con = JDBC.getCon();
if (!con.isClosed())//判断是否成功连接
System.out.println("ntt成功连接到数据库!!!");
// 2.创建statement类对象,用来执行SQL语句!!
st = con.createStatement();
// 要执行的SQL语句
String sql = "select * from author";
// 3.ResultSet类,用来存放获取的结果集!!
rs = st.executeQuery(sql);
int ID = 0;
String Name = null;
String Sex = null;
int Age = 0;
System.out.println("ntt执行结果如下所示:");
System.out.println("tt-----------------------------------------------------------------");
System.out.println("tt|t" + "ID" + "t" + "姓名" + "tt" + "性别" + "t" + "年龄t|");
System.out.println("tt-----------------------------------------------------------------");
while (rs.next()) {//4.遍历查询
// 获取 ID 这列数据
ID = rs.getInt("id");
// 获取 Name 这列数据
Name = rs.getString("author");
// 获取 Sex 这列数据
Sex = rs.getString("sex");
// 获取 Age 这列数据
Age = rs.getInt("age");
// 输出结果
System.out.println("tt|t" + ID + "t" + Name + "tt" + Sex + "t" + Age + "t|tt");
}
System.out.println("tt-----------------------------------------------------------------");
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
//5.释放资源
JDBCUtil.release(con, st, rs);
System.out.println("tttttttt获取数据库数据完毕!!!");
}
}
}
Mysql的CRUD
常见的MySQL语句命令
进入mysql 命令行:mysql -uroot -p;
查看所有数据库:show databases;
创建数据库:create database niu charset utf8;
删除数据库:drop database niu;
选择数据库:use databases;
查看所有表:show tables;
查看创建数据库的语句:show create database databasename;
查看创建表的语句:show create table tablename;
查看表结构:desc tablenmae;
库操作
创建数据库:create database shujukuba;
创建带字符集的数据库:create database mydb2 CHARACTER SET=utf8;
创建带校验的数据库:create database mydb3 CHARACTER SET=utf8 COLLATE utf8_general_ci;
显示数据库:show databases;
删除数据库:drop database shujukuba;
修改数据库编码:ALTER DATABASE shujukuba character set gb2312;
表操作
创建数据库表(创建一个表名为:employee,该表中含有id、name、sex、birthday、job字段):
create table employee
(
id int,
name varchar(40),
sex char(4),
birthday date,
job varchar(100),
);
表中增加image字段:alter table employee add image blob;
修改job值,使其长度为60(原长度为1000):alter table employee modify job varchar(60);
删除sex列:alter table employee drop sex;
表名改为user(原名employee):rename table employee to user;
修改表的字符集为utf-8:alter table user character set utf8;
列name修改为username:alter table user change column name username varchar(100);
删除表:drop table user;
增删改查实例
新建表employee:
create table employee
(
id int,
name varchar(40),
sex varchar(4),
birthday date,
entry_date date,
salary decimal(8,2),
resume text
);
插入数据:
insert into employee(id,name,sex,birthday,entry_date,salary,resume) values(1,'zhangsan','male','1993-03-04','2016-11-10','1000','i am a developer');
指定某些列插入数据:insert into employee(id) values(6);
插入汉字:insert into employee(id,name) values(6,'张三');
修改表数据:
将所有员工薪水修改为5000元:update employee set salary=5000;
将姓名为’zs’的员工薪水修改为3000元:update employee set salary = 3000 where name='zhangsan';
将姓名为’aaa’的员工薪水修改为4000元,job改为ccc:update employee set salary = 4000,job='ccc' where name='张三';
将wu的薪水在原有基础上增加1000元:update employee set salary = salary+1000 where name='张三';
删除表数据:
删除表中名称为“zs”的记录:delete from employee where job='ccc';
删除表中所有记录:delete from employee;
使用truncate删除表中记录:truncate table employee;
查询表数据:
查询表中所有学生的信息:select id,name,chinese,english,math from student;
查询表中所有学生的姓名和对应的英语成绩:select name,english from student;
查询姓名为wu的学生成绩:select * from student where name='张三';
查询英语成绩大于90分的同学:select * from student where english>'90';
查询英语分数在 80-90之间的同学:select * from student where english>=80 and english=<90;
常见MySQL字段含义
自增长:auto_increment
非空:not null
默认值:default
唯一:unique
指定字符集:charset
主键:primary key
使用单元测试,测试代码
1.定义一个类,TestXXXX,里面定义方法testXXX
2.添加junit的支持
右键工程 --- Build Path --- add Library --- Junit --- Junit4
3.在方法的上面加上注释(标记)
@Test
public void testQuery(){
...
}
4.光标选中方法名字,然后右键执行单元测试。或打开outline视图,然后选择方法右键执行
插入
//核心代码
// 要执行的SQL语句
String sql = "insert into user(name,sex,birthday,entry_date,salary,resume) values('xx','man','199x-xx-xx','2020-7-11','1000','i am a developer')";
// ResultSet类,存放获取的结果集
rs = st.executeQuery(sql);
if(rs>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
删除
//核心代码
// 要执行的SQL语句
String sql = "delete from user where id=2";
// ResultSet类,存放获取的结果集
rs = st.executeQuery(sql);
if(rs>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
更新
//核心代码
// 要执行的SQL语句
String sql = "update user set name='yj',birthday='1998-xx-xx' where id=1";
// ResultSet类,存放获取的结果集
rs = st.executeQuery(sql);
if(rs>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
//核心代码
// 要执行的SQL语句
String sql = "update user set name=?,birthday=? where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,"姓名");//从左到右数 1代表第一个?
ps.setString(2,"生日");//传入什么类型 就set什么类型
ps.setInt(3,1);
rs = ps.executeQuery();
if(rs>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
//封装成通用方法
public static int executeDML(String sql,Object...objs){//sql为要执行的mysql语句
try {
ps = con.prepareStatement(sql);
for(int i=0;i<objs.length;i++){
ps.setObject(i+1,objs[i]);
}
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
完结封装
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import com.test.JDBCUtil;
class JDBC{
// 声明Connection对象
static Connection con = null;
// 驱动程序名
static String driver = null;
// URL指向要访问的数据库名 test
static String url = null;
// MySQL配置时的用户名
static String user = null;
// MySQL配置时的密码
static String password = null;
static {
try {
//创建一个属性配置对象
Properties properties = new Properties();
//InputStream is = new FileInputStream("jdbc.properties");//放项目根目录下则可使用 如放在src下则报错未找到
//使用类加载器,读取src底下的资源文件
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//导入输入流
properties.load(is);
//读取属性
driver = properties.getProperty("driverClass");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getCon() {//获取连接对象
try {
// 加载驱动程序
Class.forName(driver);//可省略
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
}
public class Demo3 {
// 声明Connection对象
static Connection con = null;
// 声明Statement对象 用来执行SQL语句
static Statement st = null;
// 声明ResultSet对象 ResultSet类,用来存放获取的结果集!!
static ResultSet rs = null;
//声明PreparedStatement对象,用来针对?
static PreparedStatement ps = null;
public static int executeDML(String sql,Object...objs){//sql为要执行的mysql语句
//增删改的封装方法
try {
ps = con.prepareStatement(sql);
for(int i=0;i<objs.length;i++){
ps.setObject(i+1,objs[i]);
}
return ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
public static void main(String[] args) {
try {
con = JDBC.getCon();
st = con.createStatement();
// 要执行的SQL语句
String sql = "update user set name=?,birthday=? where id=?";
int i = executeDML(sql, "苍老师","2100-10-10",1);//此封装方法可以将增 删 改 合为一句
if(i>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
//5.释放资源
JDBCUtil.release(con, st, rs);
}
}
}
阿里企业邮箱、网易企业邮箱、新网企业邮箱
【标准版】400元/年/5用户/无限容量
【外贸版】500元/年/5用户/无限容量
其它服务:网站建设、企业邮箱、数字证书ssl、400电话、
联系方式:电话:13714666846 微信同号
【标准版】400元/年/5用户/无限容量
【外贸版】500元/年/5用户/无限容量
其它服务:网站建设、企业邮箱、数字证书ssl、400电话、
联系方式:电话:13714666846 微信同号
声明:本站所有作品(图文、音视频)均由用户自行上传分享,或互联网相关知识整合,仅供网友学习交流,若您的权利被侵害,请联系 管理员 删除。
本文链接:https://www.ew35.com/article_32813.html