MySQL之引狼入室(JDBC操作远程服务器数据库)

    技术2023-11-14  73

    MySQL之引狼入室(JDBC操作数据库)

    一、欲速则不达,先踩坑

    第一个坑就是什么是JDBC?JDBC如何操作数据库?

    JDBC通俗的来讲,就是一个“黄牛”,这个黄牛可以将数据库厂商和我们所写的应用程序连接,并进行沟通。 你说这个“黄牛图”啥呢?我也不知道😁。

    这是第一个坑,了解了JDBC是干啥的,然后想要操作数据库是吧?

    第二个坑,远端服务器的端口记得开放。

    我看了许多的文章,讲述JDBC如何连接到MySQL,就是没人告诉我,这个远端服务器的3306的端口一定要记得开放。 第三个坑,MySQL记得授权。

    方式一:允许用户root使用123456做为密码从任何主机连接到mysql服务器 grant all privileges on *.* to 'root'@'%' identify by '123456' with grant option; 方式二:允许用户root从ip为192.168.12.35的主机连接到mysql服务器,并使用123456做为密码,%代表任何。 grant all privileges on *.* to root@'192.168.12.35' identify by '123456' with grant option;

    详细

    二、JDBC学习

    先下载JDBC的驱动; 写代码 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MySQL_operation { public static void main(String[] args) throws Exception { // 加载驱动 // DriverManager.registerDriver(new com.mysql.jdbc.Driver());是底层,但是Class反射已经是个静态方法,直接用反而方便 Class.forName("com.mysql.jdbc.Driver"); // 获得mysql链接 Connection conn = DriverManager.getConnection("jdbc:mysql://主机地址:3306/test", "root", "密码"); // 得到操作数据库sql语句的对象Statement Statement st = conn.createStatement(); System.out.println("Access successfully!\n=================="); // 执行 ResultSet rs = st.executeQuery("select * from asgin"); // 获得结果 集合 while (rs.next()) { System.out.println("UserID:" + rs.getObject(1)); System.out.println("UserPassword:" + rs.getObject(2)); System.out.println("=================="); } // 关闭资源 rs.close(); st.close(); conn.close(); } }

    三、练手项目之:登录注册系统

    实现功能,注册(插入),登录(判别)

    import java.sql.*; import java.util.Scanner; /** * author:Lee * the goal od this test:for practice JDBC and mysql *2020年7月3日 */ public class MySQL_operation { private Connection conn; private Statement st; private ResultSet rs; public class Register{ private Connection connection; private PreparedStatement preparedStatement; private ResultSet resultSet; public Register(int ID, String psw) throws Exception { String sql = "insert into asgin values (?,?)"; Class.forName("com.mysql.jdbc.Driver"); this.connection= DriverManager.getConnection("jdbc:mysql://主机:3306/test", "root", "密码"); this.preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, ID); preparedStatement.setString(2, psw); preparedStatement.executeUpdate(); preparedStatement.close(); connection.close(); } } public MySQL_operation() throws Exception { Class.forName("com.mysql.jdbc.Driver"); // 获得mysql链接 this.conn= DriverManager.getConnection("jdbc:mysql://主机:3306/test", "root", "密码"); // 得到操作数据库sql语句的对象Statement this.st = conn.createStatement(); System.out.println("Access successfully!\n========================="); } public void Register_MYSQL() throws Exception { System.out.print("账号注册ID:"); Scanner scanner1 = new Scanner(System.in); int ID = Integer.parseInt(scanner1.nextLine()); System.out.print("账号注册密码:"); Scanner scanner2 = new Scanner(System.in); String psw = scanner2.nextLine(); Register register = new Register(ID,psw); System.out.println("注册成功!"); } public void access() throws SQLException { Scanner scanner1 = new Scanner(System.in); Scanner scanner2 = new Scanner(System.in); System.out.print("请输入ID:"); String commandID = scanner1.nextLine(); System.out.print("请输入密码:"); String commandPSW = scanner2.nextLine(); // 执行 this.rs = this.st.executeQuery("select * from asgin"); // 获得结果 集合 while (rs.next()) { if ((rs.getString(1)).equals(commandID)){ System.out.println("ID正确!"); if ((rs.getString(2)).equals(commandPSW)){ System.out.println("密码正确!\n登陆成功!"); System.out.println("UserID:" + rs.getObject(1) + "\tUserPassword:" + rs.getObject(2)); }else { System.out.println("密码错误!"); break; } break; } } } public void close() throws SQLException { this.rs.close(); this.st.close(); this.conn.close(); } }

    测试类:

    public class text { public static void main(String args[]) throws Exception{ MySQL_operation mySQL_operation = new MySQL_operation(); //注册 mySQL_operation.Register_MYSQL(); //登录 mySQL_operation.access(); //关闭应用 mySQL_operation.close(); } }

    效果:

    Access successfully! ========================= 账号注册ID:1004 账号注册密码:312oo 注册成功! 请输入ID:1004 请输入密码:132xx ID正确! 密码错误!

    把注册注释掉实现的登录功能:

    Access successfully! ========================= 请输入ID:1000 请输入密码:123hhh ID正确! 密码正确! 登陆成功! UserID:1000 UserPassword:123hhh
    Processed: 0.009, SQL: 10