栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC: (java database Connection) java数据库连接

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC: (java database Connection) java数据库连接

Java是一门面向对象语言,SQL是结构化查询语言,两者不能直接进行沟通。因此MySQL出现了。但是由于每一个数据库公司提供的方法名可能不一致,java必须记住每一个数据库的方法名,显然这样太繁琐了。 所以java语言做出了规范,让这些数据库公司实现这个规范。

JDBC链接的步骤:
1. 把jar放入到工程下并add Libaray
2. 加载驱动 Class.forName("com.mysql.cj.jdbc.Driver");
3. 获取链接对象 Connection connection=DriverManager.getConnection(url,user,password);
4. 获取执行sql语句的对象: Statement statement=connection.createStatement();
5. 执行sql语句 int row=statement.executeUpdate(sql);或ResultSet resultSet=statement.executeQuery(sql); 遍历结果集
7. 关闭资源 
实现一个简单的数据库校验测试 1.添加jar包

在项目下创建一个 lib 文件夹 存放我们的mysql jar 包(jar包网上有自行下载)

然后右键点击jar包点击add Libaray

2.加载驱动
   Class.forName("com.mysql.cj.jdbc.Driver");

需要try catch捕获一下异常不然会报错

获取链接对象
connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/world?serverTimezone=Asia/Shanghai","root","root");

word 表示你数据库的库名
serverTimezone=Asia/Shanghai:mysql80需要加上上海的时区
第一个root表示账户名
第二个root表示密码,这里我的密码是root,你要写上你的数据库密码。

获取执行sql语句的对象
   String sql="select * from tb_user where uname=? and password=?"; //?:占位符
          ps=connection.prepareStatement(sql);

这里ps 是我前面定义的同下

       Connection connection=null;
        Statement statement=null;
        PreparedStatement ps=null;
        ResultSet resultSet=null;
执行sql语句
 			ps.setString(1,uname); //
            ps.setObject(2,password);
            System.out.println();
            resultSet=ps.executeQuery();

这里是uname 和password是在main方法里定义的一会儿在控制台测试用的

 public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入账号:");
        String uname=scanner.nextLine();
        System.out.println("请输入密码:");
        String password=scanner.nextLine();
        boolean login = login(uname, password);
        if(login){
            System.out.println("登录成功");
        }else{
            System.out.println("账号密码错误");
        }
    }
关闭资源

mysql的连接通道有限,一般用后就关闭,根据使用顺序倒序关闭

finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (ps != null) {
                    ps.close();
                }
                if (connection != null) {
                    connection.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
完整代码:
package com.Test;

import java.sql.*;
import java.util.Scanner;

public class TestJdbc03 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入账号:");
        String uname=scanner.nextLine();
        System.out.println("请输入密码:");
        String password=scanner.nextLine();
        boolean login = login(uname, password);
        if(login){
            System.out.println("登录成功");
        }else{
            System.out.println("账号密码错误");
        }
    }
    public static boolean login(String uname,String password){

        Connection connection=null;
        PreparedStatement ps=null;
        ResultSet resultSet=null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/world?serverTimezone=Asia/Shanghai","root","root");
            String sql="select * from user where id=? and pwd =?"; //?:占位符
            ps=connection.prepareStatement(sql);
            //为占位符赋值
            ps.setString(1,uname); 
            ps.setObject(2,password);
            System.out.println();
            resultSet=ps.executeQuery();
            while (resultSet.next()){
                return true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (ps != null) {
                    ps.close();
                }
                if (connection != null) {
                    connection.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return false;
    }
}

控制台测试一下

这是我数据库表里的数据

匹配正确提示成功

输入错误信息提示错误

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号