文章目录
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查询全体学生信息
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclass mysqlSelectDemo02 {publicstaticvoidmain(String[] args)throwsException{//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 添加学生信息
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.util.Scanner;publicclass mysqlInsert {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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 删除学生信息
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclass mysqlDelete {publicstaticvoidmain(String[] args)throwsException{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 修改学生信息
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclass mysqlUpdate {publicstaticvoidmain(String[] args)throwsException{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
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.Scanner;publicclass login01 {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.Scanner;publicclass login02 {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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工具类
importjava.sql.*;publicclassMysqUtil{staticString DRIVER="com.mysql.jdbc.Driver";staticString URL="jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8";staticString USERNAME="root";staticString PASSWORD="123456";staticConnection connection =null;staticPreparedStatement ps =null;staticResultSet rs =null;static{try{Class.forName(DRIVER);}catch(ClassNotFoundException e){
e.printStackTrace();}}publicstaticConnectiongetConn(){try{
connection =DriverManager.getConnection(URL, USERNAME, PASSWORD
);}catch(SQLException e){
e.printStackTrace();}return connection;}publicstaticPreparedStatementgetPs(String sql){try{
ps = connection.prepareStatement(sql);}catch(SQLException e){
e.printStackTrace();}return ps;}//查publicstaticResultSetgetRs(){try{
rs = ps.executeQuery();}catch(SQLException e){
e.printStackTrace();}return rs;}//增删改publicstaticintgetInsert(){int i =0;try{
i = ps.executeUpdate();}catch(SQLException e){
e.printStackTrace();}return i;}publicstaticvoidclose(){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
importmysql.util.MysqUtil;importjava.sql.PreparedStatement;publicclassJdbcUtilTest{publicstaticvoidmain(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
🆗到底啦给靓仔一个关注吧!
版权归原作者 liangzai2048 所有, 如有侵权,请联系我们删除。