Java连接数据库

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:地址或主机名:端口号/数据库名
  ——引用自博客园:鲨猫 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值