JDBC——JAVA连接数据库

一、JDBC概述

1.什么是JDBC?

JDBC是java连接数据库的一种规范,java开发者制定了一套标准,具体的实现由不同的数据库开发商实现。

作用:用java处理数据,连接数据库,将数据发送到数据库并对数据进行增删改查等操作

mysql-connector-java-8.0.16jar——mysql提供的java连接数据库的规范

2.JDBC API

供程序员使用的接口和类,集中在java.sql包中

DriverManager类的作用:管理各种不同的JDBC驱动

connection接口:与特定数据库的连接

statement接口:执行SQL语句

Resultset接口:接收查询结果

二、JDBC搭建

1.导入mysql开发商提供的连接mysql的驱动包,复制到idea新建的一个文件夹,且右键点击

add as library按钮

2.根据类名加载mysql驱动类

Class.forName("com.mysql.cj.jdbc.Driver");

3.建立与数据库连接的通道(后者两个参数为数据库的名称和密码)

Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai","root","newpassword");

4.发送SQL语句(共两种方式)

第一种方式:获得statement对象,发送SQL

String num ="1287";
        String name="宋8";
        String phone="104";
        String address="杭州";
        // 获得Statement 对象,用来发送SQL
        Statement statement=connection.createStatement();
        statement.executeUpdate("INSERT INTO stu(num,NAME,phone,address)VALUE('"+num+"','"+name+"','"+phone+"','"+address+"' )");

第二种方式:预编译方式,提前将sql及其参数编译到preparedstatement对象中

PreparedStatement ps = connection.prepareStatement("delete from stu where num=?");
        ps.setObject(1,num);
        //执行发送sql
        ps.executeUpdate();

在对表中数据进行查询时使用第二种方式且需要Resultset对象接收查询结果,且使用的方法是executeQuery(),此方法具有返回值

 PreparedStatement ps= connection.prepareStatement("select num,name ,phone,address,height,reg_time from stu");
        String num1="208";
        //启动执行发送sql,查询时需要返回一个结果,因此需要使用executeQuary()方法
        //将查询的结果封装在resultset对象中,再从对象中提取数据
        ResultSet resultSet=ps.executeQuery();

两张方式的区别是:
4.1.代码的可读性和可维护性

预编译方式的可读性和可维护性明显大于第一种方式,因为第一种方式中含有大量的符号,易于少写 和漏写。

4.2.安全性

第一种方式,在使用statement时,参数会直接拼入SQL语句中,不能防止注入,容易受到攻击

预编译的方式使用setObject()方法进行传值,会对参数值进行检测,一个?对应一个占位值,是安全的,可以防止注入

代码演示:(对数据库种的学生表stu进行操作最终版本展示)

5.关闭通道,释放资源

ps.close();
connection.close();

完整代码: 

package jdbc;

import java.sql.*;
import java.util.ArrayList;

public class Dome4 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //根据类名加载mysql驱动器
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库链接的通道
        Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai","root","newpassword");
        //获得PrepareStatement 对象,发送sql
        PreparedStatement ps= connection.prepareStatement("select num,name ,phone,address,height,reg_time from stu");
        String num1="208";
        //启动执行发送sql,查询时需要返回一个结果,因此需要使用executeQuary()方法
        //将查询的结果封装在resultset对象中,再从对象中提取数据
        ResultSet resultSet=ps.executeQuery();
        ArrayList<Student> arrayList=new ArrayList<>();
        //resultSet.next()判断有没有下一条数据,光标指向下一行
        while (resultSet.next()){
            Student student=new Student();
            //通过resultSet对象使用get...方法提取出来数据
            student.setNum(resultSet.getInt("num"));
            student.setName(resultSet.getString("name"));
            student.setHeight(resultSet.getFloat("height"));
            student.setAddress(resultSet.getString("address"));
            student.setPhone((resultSet.getString("phone")));
            student.setReg_time(resultSet.getTimestamp("reg_time"));
            System.out.println(student);
        }
        //Student类中重写了Tostring方法
    }
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
播报频率和波形参数。我们可以使用百度语音合成API来实现语音合成,该API使用 JDBC 连接 Access 数据库,需要先下载 Microsoft 的 JDBC-ODBC 驱动,然后进行以下步骤: 1.可以将文本转换为语音,并以MP3格式进行下载。我们可以使用以下代码来实现语音合成 安装 Access 数据库并创建一个数据库文件(后缀为 .mdb 或 .accdb)。 2. 下载并安装: ```python import urllib.request import json def text_to_speech(text, filename): api_key = 'Your API Key Microsoft Access Database Engine。 3. 在系统的 ODBC 数据源管理器中添加一个数据源,选择 Microsoft Access Driver (*.mdb, *.accdb)。 4. 按照提示填写数据源名称和数据库文件路径等信息。 5. 在 Java 代码中使用 JDBC 连接 Access 数据库,示例代码如下: ```java import java.sql.*; public class AccessJDBC { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载 JDBC 驱动 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 连接数据库 String url = "jdbc:odbc:myAccessDB"; String user = ""; String password = ""; conn = DriverManager.getConnection(url, user, password); // 执行 SQL 查询 String sql = "SELECT * FROM myTable"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); // 处理查询结果 while (rs.next()) { System.out.println(rs.getString("id") + ", " + rs.getString("name")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 其中,url 参数的值应该与 ODBC 数据源管理器中设置的数据源名称相同。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值