JAVA JDBC连接MySQL数据库
JDBC使用
1、通过反射加载驱动2.建立连接3.创建执行器 用了执行sql语句
createStatement()prepareStatement() 4.执行sql语句5.获取结果6.关闭 JDBC查询全体学生信息JDBC 添加学生信息JDBC 删除学生信息JDBC 修改学生信息 JDBC 用户登录
JDBC用户登录1JDBC用户登录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") + "tn"); }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") + "tn"); } //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 大数据高级开发工程师 20kJDBC 添加学生信息
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 注册成功,影响行数:1JDBC 删除学生信息
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(); } }
运行结果: 执行成功,影响行数:1JDBC 修改学生信息
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(); } }
运行结果: 执行成功,影响行数:1JDBC 用户登录 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用户登录2import 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(); } } } } } }
使用该方法,以后想更改服务器,更改数据库,地址变了没关系,直接修改一下即可
JDBCUtilTestimport 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
到底啦给靓仔一个关注吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)