jdbc不再是个谜

jdbc(java databasse connectivity),顾名思义就是java数据库连接,即通过java连接数据库的一种方式,下面我们还学习下,jdbc的具体实现过程。

快速入门

简单6招,让你对jdbc不再模糊。

package com.hopeful.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Jdbc {
    
    

    public static void main(String[] args) {
    
    
        try {
    
    

            // 1. 注册驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 2.根据数据库连接信息,获取数据库连接信息
            String user = "root";
            String pwd = "root";
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo_db?useUnicode=true&characterEncoding=utf8", user, pwd);

            // 3.获取执行SQL语句的对象
            Statement statement = connection.createStatement();
            String sql = "select * from account";

            // 4.获取结果集
            ResultSet resultSet = statement.executeQuery(sql);

            // 5.遍历结果集
            while(resultSet.next()) {
    
    
                System.out.print("id="+resultSet.getInt("id"));
                System.out.print(",name="+resultSet.getString("name"));
                System.out.println(",money="+resultSet.getDouble("money"));
            }
            // 6.释放资源
            if(resultSet != null) {
    
    
                resultSet.close();
            }
            if(statement != null) {
    
    
                statement.close();
            }
            if(connection != null) {
    
    
                connection.close();
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

jdbc优化

虽然上面实现了数据库的连接,但是每次连接数据库都需要这么做过于麻烦,有什么办法可以简化的吗?答案,肯定是有的啦。

  • 提取工具类
    将常用的代码块封装为工具类是一种方法。

  • 配置信息填写到配置文件中
    有过项目经验的都知道,为了便于修改,我们常用的配置信息都是写在配置文件上,将数据库连接信息写到配置文件也是不错的优化方法。

因此提取工具类和书写配置文件将会是常用且很不错的方法。

下面我们也来尝试下。
创建db.properties文件,内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jt_db?useUnicode=true&characterEncoding=utf8
user=root
pwd=root

工具类

package com.hopeful.jdbc;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class Jutils {
    
    
    static String  driver;
    static String url;
    static String user;
    static String pwd;
    static {
    
    
        // 1.读取配置
        InputStream rs = Jutils.class.getClassLoader().getResourceAsStream("db.properties");
        Properties properties = new Properties();
        try {
    
    
            properties.load(rs);
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            pwd = properties.getProperty("pwd");
            // 2.注册驱动
            Class.forName(driver);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }

    // 获取连接
    public static Connection getConnection() throws SQLException {
    
    
        return DriverManager.getConnection(url,user,pwd);
    }

    // 释放资源
    public static void releaseResource(ResultSet rs, Statement statement, Connection connection) {
    
    
        if(rs != null) {
    
    
            try {
    
    
                rs.close();
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }
        }
        if(statement != null) {
    
    
            try {
    
    
                statement.close();
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }
        }

        if(connection != null) {
    
    
            try {
    
    
                connection.close();
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }
        }
    }
}

下面我们验证下编写的工具类。
查询

package com.hopeful.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcQuery {
    
    

    public static void main(String[] args) {
    
    
        try {
    
    
            // 获取连接
            Connection connection = Jutils.getConnection();

            // 获取执行sql的对象
         Statement statement = connection.createStatement();
            String sql = "select * from account";
            // 获取结果集
            ResultSet resultSet = statement.executeQuery(sql);
            // 遍历结果集
            while(resultSet.next()) {
    
    
                System.out.print("id="+resultSet.getInt("id"));
                System.out.print(",name="+resultSet.getString("name"));
                System.out.println(",money="+resultSet.getDouble("money"));
            }
			// 释放资源
            Jutils.releaseResource(resultSet,statement,connection);
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    }
}

更新(插入,修改,删除)

package com.hopeful.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcUpdate {
    
    
    public static void main(String[] args) {
    
    
        try {
    
    
            Connection connection = Jutils.getConnection();
            Statement statement = connection.createStatement();

            // 插入操作
            //String sql = "INSERT INTO ACCOUNT VALUE(NULL,'hopeful',3000)";

            // 更新操作
            // String sql = "UPDATE ACCOUNT SET money=3000 WHERE NAME='hopeful'";
	
			// 删除操作
            String sql = "DELETE FROM ACCOUNT WHERE NAME='hopeful'";
            int count = statement.executeUpdate(sql);
            System.out.println("影响的行数" + count);

            Jutils.releaseResource(null,statement,connection);
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    }
}

小试牛刀

让用户输入用户名和密码实现登录效果,代码如下:

package com.hopeful.jdbc;

import netscape.security.UserTarget;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class LoginUser {
    
    
    static Connection connection = null;
    static Statement statement = null;
    static ResultSet rs = null;
    public static void main(String[] args) {
    
    

        try {
    
    
            // 获取连接
            connection = Jutils.getConnection();
			// 获取执行sql的传输器对象
            statement = connection.createStatement();
            System.out.println("请登录");
            System.out.println("请输入用户名");
            Scanner scanner = new Scanner(System.in);
            String user = scanner.nextLine();
            System.out.println("请输入密码");
            String password = scanner.nextLine();
            loginUser(user, password);

        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        } finally {
    
    
            Jutils.releaseResource(rs, statement, connection);
        }
    }

    public static void loginUser(String user, String password) {
    
    
        String sql = "select * from user where user = '" + user + "' and password = '" + password + "' ";
        try {
    
    
            ResultSet resultSet = statement.executeQuery(sql);
            if(resultSet.next()) {
    
    
                System.out.println("登录成功");
            } else {
    
    
                System.out.println("登录失败");
            }
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    }
}

阅读到这里,相信你对jdbc已经有了较为清晰的理解,如果动手再尝试下,相信你理解得更为清楚,赶紧去试试吧。

如果对你有用,你的支持(点赞,收藏)就是我写作的最大东西。

猜你喜欢

转载自blog.csdn.net/weixin_47088026/article/details/113744485