当前位置 博文首页 > 小小之食人魔:Java连接数据库

    小小之食人魔:Java连接数据库

    作者:[db:作者] 时间:2021-07-25 12:24

    Java在连接数据库前要准备两个jar包:
    Java数据库驱动
    以下是完整查询数据库代码:

    import java.sql.*;
    
    public class DatabaseConnect {
        //sqlserver驱动  --此处用的是sqlserver数据库
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        //数据库地址
        String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=java";
        //数据库用户
        String username = "sa";
        //数据库密码
        String passwd = "Wxk@8080.";
    
        //创建数据库连接类
        Connection dbConn;
    
        //数据库语句 "?"作为占位符,下面会为它传入一个值
        String sqlSelect = "select * from userlist where loginname = ?";
    
        //创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库
        PreparedStatement pstm;
         //结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.
        ResultSet result;
    
        public void linkDb() {
            //加载数据库驱动
            try {
                /**引用菜鸟教程
                 * Class.forName() 方法
                 * 此方法含义是:加载参数指定的类,并且初始化它。
                 * 在 jdbc 连接数据库中的应用
                 * 到这里,不用解释,读者也会明白,在使用 jdbc 方式连接数据库时,为什么要执行 Class.forName('驱动类名') 方法了:
                 * 将驱动类的 class 文件装载到内存中,并且形成一个描述此驱动类结构的 Class 类实例,并且初始化此驱动类,
                 * 这样 jvm 就可以使用它了,这就是 Class.forName() 方法的含义。
                 * 大概就是将驱动变成类并初始化,好让JVM虚拟机调用。
                 */
                Class.forName(driverName);
                System.out.println("驱动加载成功!");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.out.println("加载驱动失败!");
            }
            //连接数据库
            try {
                //与数据库连接并返回连接对象。
                //DriverManager用来管理一组 JDBC 驱动程序的基本服务。它提供了连接到数据源的另一种方法。
                //在调用getConnection方法时,DriverManager会试着从初始化时加载的那些驱动程序以及
                // 使用与当前程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
                dbConn = DriverManager.getConnection(url, username, passwd);
                System.out.println("数据库已连接!");
            } catch (SQLException throwables) {
                throwables.printStackTrace();
                System.out.println("数据库连接失败!");
            }
            //执行查询语句
            try {
                //sql语句预编译(在随后的运行中可以节省时间并增加代码的可读性,而且可以防止sql注入攻击)
                pstm = dbConn.prepareStatement(sqlSelect);
                //将第一个占位符“?”的值设置为”admin“(问号在上面?)
                pstm.setString(1, "admin");
                //获取查询结果集 = 执行sql语句
                result = pstm.executeQuery();
                System.out.println("查询结果为:");
                //输出结果集
                while (result.next()) { //如果result中有下一条记录则为true
                    //数据库表中 要查询的列
                    //String loginname = result.getString(“数据库列名”)
                    String loginname = result.getString("loginname");
                    String loginpasswd = result.getString("loginpasswd");
                    String username = result.getString("username");
                    Integer age = result.getInt("age");
                    String phone = result.getString("phone");
                    String project = result.getString("project");
                    System.out.println(loginname + loginpasswd + username + age + phone + project);
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
                System.out.println("sql语句查询失败!");
            }
            try {
                //关闭数据库连接
                dbConn.close();
                //关闭预编译对象
                pstm.close();
                //关闭结果集
                result.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
                System.out.println("有东西没关!");
            }
        }
        //主函数在这儿
        public static void main(String[] args) {
            DatabaseConnect Connect = new DatabaseConnect();
            Connect.linkDb();
        }
    }
    
    

    运行截图:
    在这里插入图片描述

    不同数据库的对应驱动:

     * MySQL驱动:com.mysql.jdbc.Drive
     * Oracle驱动:oracle.jdbc.driver.OracleDriver
     * SQLServer驱动:com.microsoft.sqlserver.jdbc.SQLServerDriver
     * PostgreSQL驱动:org.postgresql.Driver
     * DB2驱动:com.ibm.db2.jdbc.net.DB2Driver
     * Sybase驱动:com.sybase.jdbc.SybDriver
     */
     ——引用自博客园:鲨猫 
    

    不同的数据库不同的连接协议:

     * MySQL格式:jdbc:mysql://地址或主机名:端口号/数据库名
     * Oracle格式:jdbc:oracle:thin:@地址或主机名:端口号:数据库名
     * SQLServer格式:jdbc:sqlserver://地址或主机名:端口号;databaseName=数据库名
     * PostgreSQL格式:jdbc:postgresql://地址或主机名:端口号/数据库名
     * DB2格式:jdbc:db2:地址或主机名:端口号/数据库名
     * Sybase格式:jdbc:sybase:Tds:地址或主机名:端口号/数据库名
      ——引用自博客园:鲨猫 
    
    cs