Java JDBC连接MySQL数据库,基础语法及自定义JDBC的MySQL工具类
文章目录
- JAVA JDBC连接MySQL数据库
- JDBC使用
- 1、通过反射加载驱动
- 2.建立连接
- 3.创建执行器 用了执行sql语句
- createStatement()
- prepareStatement()
- 4.执行sql语句
- 5.获取结果
- 6.关闭
- JDBC查询全体学生信息
- JDBC 添加学生信息
- JDBC 删除学生信息
- JDBC 修改学生信息
- JDBC 用户登录
- JDBC用户登录1
- JDBC用户登录2
- MySQLUtil 工具类
- JDBCUtilTest
JAVA JDBC连接MySQL数据库
JDBC使用
1、通过反射加载驱动
Class.forName("com.mysql.jdbc.Driver");
2.建立连接
Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8","root","123456");
3.创建执行器 用了执行sql语句
createStatement()
prepareStatement()
Statement statement = connection.createStatement();String sql = "select * from student";
4.执行sql语句
ResultSet rs = statement.executeQuery(sql);
5.获取结果
while (rs.next()){System.out.print(rs.getInt("id") + "\t");System.out.print(rs.getString("name") + "\t");System.out.print(rs.getInt("age") + "\t");System.out.print(rs.getString("sex") + "\t");System.out.print(rs.getString("clazz") + "\t");System.out.print(rs.getString("job") + "\t");System.out.print(rs.getString("gongzi") + "\t\n");}
6.关闭
rs.close();statement.close();connection.close();
JDBC查询全体学生信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class mysqlSelectDemo02 {public static void main(String[] args) throws Exception{//jdbc使用//1.通过反射加载 加载驱动Class.forName("com.mysql.jdbc.Driver");//2.建立连接Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8","root","123456");//3.创建执行器 用来执行SQL语句//3.1 createStatement()//3.2 prepareStatement()Statement statement = connection.createStatement();String sql = "select * from student";//4.执行sql语句ResultSet rs = statement.executeQuery(sql);//5.获取结果while (rs.next()){System.out.print(rs.getInt("id") + "\t");System.out.print(rs.getString("name") + "\t");System.out.print(rs.getInt("age") + "\t");System.out.print(rs.getString("sex") + "\t");System.out.print(rs.getString("clazz") + "\t");System.out.print(rs.getString("job") + "\t");System.out.print(rs.getString("gongzi") + "\t\n");}//6.关闭rs.close();statement.close();connection.close();}
}
运行结果:20221401 刘生发 25 男 14 没有工作 17k
20221402 胡杰靓 24 男 14 大数据工程师 18k
20221403 朱佳乐 23 男 14 没有工作 17k
20221404 张咪 23 女 14 没有工作 17k
20221405 杨旭 22 男 14 码农 15k
20221406 陶华根 22 男 14 码农 15k
20221407 潘磊 22 男 14 码农 14k
20221408 王友虎 24 男 14 大数据高级开发工程师 20k
20221409 覃笑 26 男 14 大数据架构师 50k
20221410 潘磊 22 男 14 码农 14k
20221411 王友虎 24 男 14 大数据高级开发工程师 20k
20221412 覃笑 26 男 14 大数据架构师 50k
20221413 潘磊 22 男 14 码农 14k
20221414 王友虎 24 男 14 大数据高级开发工程师 20k
20221415 覃笑 26 男 14 大数据架构师 50k
20221416 潘磊 22 男 14 码农 14k
20221417 王友虎 24 男 14 大数据高级开发工程师 20k
20221418 覃笑 26 男 14 大数据架构师 50k
20221419 王友虎 24 男 14 大数据高级开发工程师 20k
20221420 覃笑 26 男 14 大数据架构师 50k
20221421 覃笑 26 男 14 大数据高级开发工程师 20k
20221422 王友虎 24 男 14 大数据高级开发工程师 20k
20221423 覃笑 26 男 14 大数据架构师 50k
20221424 覃笑 26 男 14 大数据高级开发工程师 20k
20221425 王友虎 24 男 14 大数据高级开发工程师 20k
20221426 覃笑 26 男 14 大数据架构师 50k
20221427 覃笑 26 男 14 大数据高级开发工程师 20k
20221428 王友虎 24 男 14 大数据高级开发工程师 20k
20221429 覃笑 26 男 14 大数据架构师 50k
20221430 覃笑 26 男 14 大数据高级开发工程师 20k
20221431 李静 25 女 14 没有工作 17k
20221432 奥特曼 25 男 14 打怪兽 15k
20221433 杨金杨 25 男 14 码农 15k
20221434 杨金杨 25 男 14 打怪兽 15k
20221435 杨金杨 25 男 14 打豆豆 15k
20221436 杨金杨 25 男 14 打怪兽 15k
20221437 李静 25 女 14 打豆豆 20k
20221438 覃笑 26 男 14 招生 25k
20221439 李静 27 男 14 搞钱 28k
20221440 张志凯 26 男 14 铠甲勇士 10k
20221441 靓仔 24 男 14 大数据高级开发工程师 20k

JDBC 添加学生信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;public class mysqlInsert {public static void main(String[] args) throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("请输入您的id:");int id = scanner.nextInt();System.out.println("请输入您的姓名:");String name = scanner.next();System.out.println("请输入您的年龄:");int age = scanner.nextInt();System.out.println("请输入您的性别:");String sex = scanner.next();System.out.println("请输入您的班级:");String clazz = scanner.next();System.out.println("请输入您想要的工作:");String job = scanner.next();System.out.println("请输入您想要的薪资:");String gongzi = scanner.next();Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8","root","123456");Statement statement = connection.createStatement();String sql = "insert into student(id,name,age,sex,clazz,job,gongzi) values("+id+",'"+name+"',"+age+",'"+sex+"','"+clazz+"','"+job+"','"+gongzi+"')";int i = statement.executeUpdate(sql);if (i==i){System.out.println("注册成功,影响行数:" + i);}else {System.out.println("注册失败");}statement.close();connection.close();}
}
运行结果:请输入您的id:
20221443
请输入您的姓名:
test
请输入您的年龄:
23
请输入您的性别:
女
请输入您的班级:
14
请输入您想要的工作:
划水
请输入您想要的薪资:
50k
注册成功,影响行数:1

JDBC 删除学生信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class mysqlDelete {public static void main(String[] args) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8","root","123456");Statement statement = connection.createStatement();String sql = "delete from student where name = 'test'";int i = statement.executeUpdate(sql);if (i>0){System.out.println("执行成功,影响行数:" + i);}else {System.out.println("执行失败,影响行数:" + i);}statement.close();connection.close();}
}
运行结果:执行成功,影响行数:1

JDBC 修改学生信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class mysqlUpdate {public static void main(String[] args) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8","root","123456");Statement statement = connection.createStatement();String sql = "update student set age = 80 where name = 'test'";int i = statement.executeUpdate(sql);if (i>0){System.out.println("执行成功,影响行数:" + i);}else {System.out.println("执行失败,影响行数:" + i);}statement.close();connection.close();}
}

运行结果:执行成功,影响行数:1

JDBC 用户登录
JDBC用户登录1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;public class login01 {public static void main(String[] args) throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("请输入用户:");String username = scanner.next();System.out.println("请输入密码:");String password = scanner.next();Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia","root","123456");Statement statement = connection.createStatement();//1.通过username去mysql中查找有没有这一条记录(存在:输入密码,不存在:就报错了)//2.存在之后 用查到的密码匹配输入的密码String sql = "select * from user where username='"+username+"'";ResultSet rs = statement.executeQuery(sql);if (!rs.next()){System.out.println("用户输入错误");//结束}//匹配密码String password1 = rs.getString("password");if (password==null || !password.equals(password1)){System.out.println("密码不匹配");}System.out.println("登录成功");rs.close();statement.close();connection.close();}
}
运行结果1:请输入用户:
123
请输入密码:
456
用户输入错误运行结果2:请输入用户:
123
请输入密码:
456
用户输入错误运行结果3:请输入用户:
root
请输入密码:
123456
登录成功
但是这种方法通过SQL注入 123’ or '1=1 是可以登录进去的(不安全)
JDBC用户登录2
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;public class login02 {public static void main(String[] args) throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("请输入用户:");String username = scanner.next();System.out.println("请输入密码:");String password = scanner.next();Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/shujia","root","123456");String sql = "select * from user where username=?";PreparedStatement statement = connection.prepareStatement(sql);statement.setString(1,username);ResultSet rs = statement.executeQuery();if (!rs.next()){System.out.println("用户输入错误");}//匹配密码String password1 = rs.getString("password");if (password==null || !password.equals(password1)){System.out.println("密码不匹配");}System.out.println("登录成功");rs.close();statement.close();connection.close();}
}
这种方式是安全的,以后开发都是使用该方法
MySQLUtil 工具类
如果说项目多了,每次都要启动JDBC的驱动,太啰嗦了为了减少工作量,我们自己定义一个MySQL JDBC工具类
import java.sql.*;public class MysqUtil {static String DRIVER="com.mysql.jdbc.Driver";static String URL="jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8";static String USERNAME="root";static String PASSWORD="123456";static Connection connection = null;static PreparedStatement ps = null;static ResultSet rs = null;static {try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConn() {try {connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (SQLException e) {e.printStackTrace();}return connection;}public static PreparedStatement getPs(String sql){try {ps = connection.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}//查public static ResultSet getRs(){try {rs = ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}//增删改public static int getInsert(){int i = 0;try {i = ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}public static void close(){if (rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}if (ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}if (connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}}
}
使用该方法,以后想更改服务器,更改数据库,地址变了没关系,直接修改一下即可
JDBCUtilTest
import mysql.util.MysqUtil;import java.sql.PreparedStatement;public class JdbcUtilTest {public static void main(String[] args) {MysqUtil.getConn();String sql = "insert into student(id,name,age,sex,clazz,job,gongzi) values(20221445,'test',23,'nan','14','扫厕所','3k')";PreparedStatement ps = MysqUtil.getPs(sql);int insert = MysqUtil.getInsert();if (insert>0){System.out.println("运行成功,影响行数" + insert);}else {System.out.println("运行失败,影响行数" + insert);}MysqUtil.close();}
}
运行结果:运行成功,影响行数1

🆗到底啦给靓仔一个关注吧!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
