JavaSE学习(快速上手 JDBC:基础连接实战步骤)

前言

JDBC(Java database connectivity)是 Java 语言中用于执行 SQL 语句的 API(应用程序编程接口),它允许 Java 程序与各种关系型数据库进行交互,为 Java 开发人员提供了一种统一的方式来访问不同类型的数据库。


一、JDBC程序编写步骤

实现基础链接后进行数据查询:

//1.注册操作数据的驱动---反射
Class.forName("com.mysql.cj.jdbc.Driver");
//2.使用api连接数据库(端口:3306 用端口连接数据库,库名:practice)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/practice?useSSL=false&serverTimezone=UTC","root","123456");
System.out.println("conn = " + conn);
//3.定义查询语句
String sql="select * from practice";
//4.获取查询对象(创建一个用于将 SQL 语句发送到数据库的 Statement 对象)
Statement statement = conn.createStatement();
System.out.println("statement = " + statement);
//5.使用查询对象执行sql
ResultSet resultSet = statement.executeQuery(sql);
System.out.println("resultSet = " + resultSet);
//6.解析数据
while (resultSet.next()){
   int sno = resultSet.getInt("sno");
   String sname = resultSet.getString("sname");
   String ssex = resultSet.getString("ssex");
   System.out.println(sno+" | "+sname+" | "+ssex);
}
//7.释放资源(释放连接对象和查询对象)
statement.close();
conn.close();

JDBC编程中使用 ResultSet 对象来处理数据库查询结果时(例如这里的getString),必须先调用 ResultSet 的 next() 方法,将游标移动到第一行(因为游标创建后位于第一行之前),否则会出现Before start of result set异常。


二、数据的更新、插入和删除

这里不再展示代码,与查询不同的是用executeUpdate()方法,查询中是statement.executeQuery()方法。

ResultSet resultSet = statement.executeUpdate(sql);

将以上程序写完后最重要的就是解耦
1、相同的部分提取出来,封装成一个方法;
2、参数解耦,可以单独定义或者放入属性文件中。

三、检验管理是否合法

public boolean isAdmin(String admin,String passWord) throws Exception {
        Connection conn = getConn();//封装好的用于注册驱动、连接数据库的方法
        String sql="select * from admins where admin='"+admin+"' and 
        password='"+passWord+"'";
         // select * from admins where admin='aaa' and password='12345'
        System.out.println("sql = " + sql);
        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        boolean next = resultSet.next();
        return next;
    }

注意:
1、这样的写法是有sql注入风险的,使用Statement的子类PreparedStatement可以有效解决;
2、在拼接时注意这种sql语句的写法,字段名要加单引号;
2、admin和and中间一定要有空格,否则是错误的sql语句。

public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Jdbc jdbc = new Jdbc();//动态方法调用要new一个
        System.out.println("------欢迎使用,请登录!------");
        System.out.println("账户:");
        String admin = scanner.next();
        System.out.println("密码:");
        String passWord = scanner.next();
        boolean admin1 = jdbc.isAdmin(admin, passWord);
        if(admin1){
            System.out.println("已登录");
        }else{
            System.out.println("账户不存在或密码错误,请重试!");
        }
    }

四、数据库连接参数独立设置

实现参数解耦,步骤如下:
1、创建一个properties属性文件(配置文件),用于存储应用程序的配置信息,文件的每一行通常遵循 key=value (键-值)的格式
在这里插入图片描述

2、将读取配置文件的内容写入无参构造中:

public Jdbc() throws Exception {
    Properties properties = new Properties();
    FileInputStream fileInputStream = new FileInputStream("src\\resourse.properties");
    properties.load(fileInputStream); 
    user = properties.getProperty("user");
    //"user"是配置文件中键的名字,而user是类的成员变量
    passWord = properties.getProperty("password");
    //"password"是配置文件中键的名字,而passWord的类的成员变量
    driver = properties.getProperty("driver");
    url = properties.getProperty("url");
    }

为什么将这部分内容写入无参构造方法中?
无参构造方法在创建对象时自动执行,在其中读取配置文件内容,能让对象在创建之初就获取到必要的配置信息,完成初始化。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值