实现Java的JDBC编程

Java数据库编程:利用JDBC实现高效数据操作 本文深入探讨了Java数据库连接(JDBC)技术,通过实例讲解了如何利用ResultSetTableModel来操作数据库,并在JTable中展示查询结果。文章详细介绍了ResultSet的类型和并发性设置,并且通过DisplayQueryResults类展示了如何构建一个具有交互性的数据库查询界面。 阅读详情

写在前面

  • 当下的应用系统绝大多数离不开数据库,Java 程序访问数据库的基本方式是通过JDBC来实现。
  • JDBC 是一种用于 SQL 语句的java API,它由 java.sql.,javaX.sql. 包中的类和接口组成。

1.JDBC 工作原理

  • Java 语言访问数据库操作完全面向抽象接口编程。
  • 开发数据库应用不用限定在特定数据库厂商的API。
  • 程序的可移植性大大增强。
    在这里插入图片描述

2. JDBC 开发步骤

在这里插入图片描述

2.1 配置数据库驱动

  • 构建成功的 Maven 项目包含 src 文件夹、target 文件夹、pom.xml 文件三部分组成,要想在项目中使用 JDBC 编程,必须在 pom.xml 文件中配置以下依赖,不然会出现无法连接数据库的问题。
  • 以MySQL为例:
 <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    </dependencies>

https://search.maven.org/
可供大家查找想要的依赖jar 包的属性。

2.2 加载数据库驱动

  • 加载数据库驱动,作为JDBC 开发步骤的第一步,主要是通过反射机制来实现的,通过类名反射得到,会出现 ClassNotFoundException 异常处理。
//1.加载数据库驱动(MySQL)备注:5.1之后可以不明确加载驱动
Class.forName( "com.mysql.jdbc.Driver" );

2.3 建立数据库连接

  • 连接数据库采用的是 DriverManager 的静态方法 getConnection(url)来建立连接,返回Connection 对象,另一种是通过DataSource(数据源)对象获取。
  • url 必须按照相应的规范书写,jdbc:database://host:port/databaseName?p1=v1&p2=v2 ,对于MySQL 数据库而言,url 可表示为 jdbc:mysql://localhost:3306/databaseName?user=root&password=123456 。
//2.连接数据库
            //jdbc:database://host:port/databaseName?p1=v1&p2=v2
            //jdbc:mysql://localhost:3306/student_management
            Connection connection =
                    DriverManager.getConnection( "jdbc:mysql://localhost:3306/studentdatabase?user=root&password=123456&useSSL=false" );

2.4 创建操作命令

  • <1> Statement 用于执行不带参数的简单SQL语句
//3.创建 Statement 命令
 Statement statement = connection.createStatement();

这种情况下创建的操作命令执行带参数的SQL语句会发生SQL注入。

  • <2> PreparedStatement 用于执行带或者不带参数的SQL语句
    此种情况下创建的操作命令有如下优点:
    性能比Statement高、SQL预编译、阻止常见的SQL注入攻击。
    需要注意的是PreparedStatement 的占位符:? 下标从1开始,并且不能使用多值。
//通过调用方法传入参数执行SQL语句
 public static void queryMemoGroupByName(String groupName) {
 	String sql = "select * from 表名 where 字段 in (?)";
    PreparedStatement preparedStatement = connection.prepareStatement( sql );
    preparedStatement.setString( 1, groupName );
 }

2.5 执行SQL语句

  • Statement 和 PreparedStatement
    对于 R 操作,statement 调用 executeQuery() 方法返回ResultSet 结果集;对于 CUD 操作statement 调用 executeUpdate() 方法返回 int 型,成功返回1,失败返回0。
//4.准备SQl语句执行SQL语句
//R 查询
  ResultSet resultSet = statement.executeQuery( "select *  from 表名" );
  ResultSet resultSet = preparedStatement.executeQuery();
//CUD 更新 删除 增加操作
  int insertValue =statement.executeUpdate("insert into 表名 values (  )" );
  int insertValue =preparedStatement.executeUpdate("insert into 表名 values (  )" );

2.6 处理返回结果集

  • ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
  • ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
  while (resultSet.next()) {//如果返回true表示有下一行记录,则否无记录
	  int id = resultSet.getInt("id");
      String name = resultSet.getString("name");
      LocalDateTime createdTime = resultSet.getTimestamp("created_time").toLocalDateTime();
      LocalDateTime modifyTime = resultSet.getTimestamp("modify_time").toLocalDateTime();
      System.out.println(String.format("编号:%d, 名称:%s, 创建时间:%s, 修改时间:%s",
                                id, name,createdTime.toString(), modifyTime.toString()
                        ));
            }

2.7 关闭操作

  • 访问数据库完毕后必须关闭结果集、关闭命令、关闭连接三步操作,当然也可以使用try 自动关闭机制,因为 ResultSet Statement Connection 都已经实现了AutoCloseable接口。
//关闭结果集 关闭命令 关闭连接
  resultSet.close();
  statement.close();
  connection.close();
//AutoCloseable接口 自动关闭
 try(
	 Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/databaseName?user=root&password=123456&useSSL=false" );
             //3.创建命令
             Statement statement = connection.createStatement();
             //4.准备SQl语句
             ResultSet resultSet = statement.executeQuery( "select *  from 表名" )
        ) 

3. 典型代码

  • <1>Statement 引起SQL注入问题
import java.sql.*;

/**
 * @Auther: SolarL
 * @Date: 2018/11/24
 * @Description: com.sunlong.jdbc
 * @version: 1.0
 */
public class TestJDBC3 {

    public static void queryMemoGroupByName(String groupName) {
        try {
            Class.forName( "com.mysql.jdbc.Driver" );
            Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/studentdatabase?user=root&password=123456" );
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery( "select * from student_management where 学号 = '" + groupName + "'" );
               while (resultSet.next()) {
                String num = resultSet.getString( "学号" );
                String name = resultSet.getString( "姓名" );
                String sex = resultSet.getString( "性别" );
                String school = resultSet.getString( "学院" );
                String class1 = resultSet.getString( "班级" );
                String class2 = resultSet.getString( "籍贯" );

                System.out.println( String.format(
                        "学号:%s,姓名:%s,性别:%s,学院:%s,班级:%s,籍贯:%s",
                        num, name, sex, school, class1, class2
                ) );
            }

            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        // queryMemoGroupByName( "201612345678" );
        //SQL注入
        //select * from student_management where 学号 = '+ groupName+';
        //select * from student_management where 学号= 'PHP组' or 1=1 or 1='';
        queryMemoGroupByName( "学生组' or 1=1 or 1='" );
    }
}

对于以上SQL注入问题的解决办法,只需要将创建操作命令的时候使用 PreparedStatement 创建即可。

  • <2> JDBC 开发模板
import java.sql.*;

/**
 * @Auther: SolarL
 * @Date: 2018/11/25
 * @Description: com.sunlong.jdbc
 * @version: 1.0
 */
public abstract class JdbcTemplate {
    private String url;
    private Connection connection;
    private Statement statement;
    private ResultSet resultSet;
    Integer effect = -1;

    //jdbc:mysql://localhost:3306/database?user=root&password=018162
    public JdbcTemplate(String host, Integer port, String databaseName, String user, String password) {
        this.url = String.format( "jdbc:mysql://%s:%d/%s?user=%s&password=%s", host, port, databaseName, user, password );

    }

    public final void call() {
        //1.加载驱动
        loadDriver();
        //2.创建连接
        createConnect();
        //3.创建命令
        createStatement();
        //4.准备SQL
        createSql();
        //5.执行SQL
        execute();
        //6.处理结果
        //第一类:CUD int 第二: R result
        handlerResult();
        //7.关闭结果集 关闭命令 关闭连接
        closeAll();
    }

    private void closeAll() {
        if (this.resultSet != null) {
            try {
                this.resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (this.statement != null) {
            try {
                this.statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (this.connection != null) {
            try {
                this.connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        this.effect = -1;

    }

    private void handlerResult() {
        if (this.executeType()) {
            try {
                this.handlerR( resultSet );
            } catch (SQLException e) {
                e.printStackTrace();
            }

        } else {
            this.handleCUD( effect );
        }
    }

    protected abstract void handleCUD(Integer effect);

    protected abstract void handlerR(ResultSet resultSet) throws SQLException;

    private void execute() {
        String sql = this.createSql();
        if (sql != null) {
            if (this.executeType()) {
                try {
                    resultSet = statement.executeQuery( sql );
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            } else {
                try {
                    effect = statement.executeUpdate( sql );
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    //如果返回true 查询, 如果返回false 插入,删除,更新
    public abstract boolean executeType();
    //用户来覆写
    public abstract String createSql();

    private void createStatement() {
        try {
            statement = connection.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void createConnect() {
        try {
            connection = DriverManager.getConnection( this.url );
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void loadDriver() {
        try {
            Class.forName( "com.mysql.jdbc.Driver" );
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}



import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;

/**
 * @Auther: SolarL
 * @Date: 2018/11/26
 * @Description: com.sunlong.jdbc
 * @version: 1.0
 */
public class TestJdbcTemplate {
    public static void main(String[] args) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate( "localhost", 3306, "memo", "root", "123456" ) {
            @Override
            protected void handleCUD(Integer effect) {
                //do something
            }

            @Override
            protected void handlerR(ResultSet resultSet) throws SQLException {
                if (resultSet != null) {
                    while (resultSet.next()) {
                        int id = resultSet.getInt( "id" );
                        String name = resultSet.getString( "name" );
                        LocalDateTime createdTime = resultSet.getTimestamp( "created_time" ).toLocalDateTime();
                        LocalDateTime modifyTime = resultSet.getTimestamp( "modify_time" ).toLocalDateTime();
                        System.out.println(
                                String.format(
                                        "编号:%d, 名称:%s, 创建时间:%s, 修改时间:%s",
                                        id, name,
                                        createdTime.toString(),
                                        modifyTime.toString()
                                ) );
                    }
                }
            }

            @Override
            public boolean executeType() {
                return true;
            }

            @Override
            public String createSql() {
                return "select id,name,created_time,modify_time from memo_group ";
            }
        };

        jdbcTemplate.call();
    }
}
  • <3> JDBC 事务管理
  • 数据库中,如不进行手动设置,事务默认自动提交,当我们在进行更新操作正常的情况下,进行错误插入,如果事务自动提交,则会发生事务的不一致性,当我们手动设置事务提交,待操作完全完成后提交事务,出现错误回滚的原始操作,就可确保事务的一致性。
import java.sql.*;

/**
 * @Auther: SolarL
 * @Date: 2018/11/25
 * @Description: com.sunlong.jdbc
 * @version: 1.0
 */
public class TransactionJdbc {
    public static void main(String[] args) {
        //演示事务
        //1.更新操作 - 正常
        //2.插入操作 - 错误
        transaction();
    }

    public static void transaction() {
        Connection connection = null;
        try {
            //1、加载数据库驱动
            Class.forName( "com.mysql.jdbc.Driver" );
            //2.建立连接,连接数据库
            //关于数据库连接的URL格式JDBC规范里面也有定义
            // jdbc:database://host:port/databaseName?p1=v1&p2=v2
            //jdbc:mysql://localhost:3306/memo?user=root&password=123456
            connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/studentdatabase?user=root&password=018162" );
            connection.setAutoCommit( false );
            //3.创建命令
            String updateSQL = " update student_management set 班级 = ? where 学号 = ?";
            PreparedStatement preparedStatement = connection.prepareStatement( updateSQL );
            preparedStatement.setString( 1, "信息163" );
            preparedStatement.setString( 2, "201611010321" );

            //4.准备SQL并执行
            int effectUpdate = preparedStatement.executeUpdate();
            System.out.println( "更新操作" + (effectUpdate == 1) );

            String insertSQL = "insert into student_management(id,name) values (?,?)";
            preparedStatement = connection.prepareStatement( insertSQL );
            int effectInsert = preparedStatement.executeUpdate();
            System.out.println( "插入操作:" + (effectInsert == 1) );
            
            if (effectUpdate == 1 && effectInsert == 1) {
                connection.commit();
            } else {
                connection.rollback();
            }

            //7.关闭命令
            preparedStatement.close();
            //8.关闭连接
            connection.close();

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
            if (connection != null) {
                try {
                    connection.rollback();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
}

结束语

小哥哥,小姐姐们,长得这么好看的你,觉得文章还不错就关注我吧,顺便给我点个赞鼓励一下我吧,哈哈哈
在这里插入图片描述

Java实现即时通讯系统:QQ聊天与JDBC/Socket编程 本文还有配套的精品资源,点击获取 简介:本项目通过Java编程实现了一个即时通讯系统,模拟QQ聊天功能,包括消息的发送与接收,头像显示等。基于Java JDBC和Socket编程技术,涉及类与对象、多线程处理、网络通信协议TCP/IP、数据库连接、用户界面设计、消息序列化、安全性措施、并发处理以及错误处理等关键编程概念。此项目不但帮助理解即时通讯系统的构造,还能提升开发者在... 阅读详情

相关推荐

Java数据库编程与JDBC: 交互式SQL小程序的实现

本章介绍了如何使用JDBC驱动程序连接数据库服务器,并通过一个交互式SQL小程序展示如何实现这一功能。小程序允许用户输入SQL查询,并将结果显示在另一个文本区域。本章内容不仅涉及了JDBC的应用,还包括了Java小程序的基本结构和事件处理机制。

weixin_36122351的博客 384

IDEA用Maven连接MySQL的jdbc驱动,并操作数据库

1、在IDEA里创建Maven项目 1.1、点击Create New Project 1.2、选择Maven,JDK这里用的是1.8,点击Next 1.3、填入“组织名”、“项目名”,版本是默认的,点击Next 1.4、选择创建路径,点击Finsh 1.5、这是创建完成的界面 2、用Maven连接Mysql的JDBC驱动 2.1、打开src下的pom.xml文件, 在里面添加Mysql的jdbc包的引用,代码如下 1 <depende...

心猿问道的博客 5090

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

JDBC---Maven之jdbc连接数据库

JDBC---Maven之jdbc连接数据库

大呱的博客 5198

PLC模拟量输入电路设计:±10V与±20mA信号调理全解析

在工业自动化和数据采集系统中,模拟量输入是连接物理世界与数字控制的核心桥梁。无论是变送器输出的4-20mA电流环,还是伺服驱动与信号发生器提供的±10V电压信号,PLC和采集模块都需要在复杂现场环境下稳定、精准地完成信号采集。理解信号体制的原理——电流环抗长线干扰、电压环响应快——是设计模拟输入前端的基础。通过精密电阻网络实现分压与采样,利用运放完成双极性到单极性的电平搬移,配合TVS与滤波电路保障可靠性,并经过ADC量化与校准流程,最终构建出兼顾精度、成本和工业级鲁棒性的完整信号链路。本文面向硬件工程师与

weixin_29163797的博客 300

cadence allegro 17.x 降版本到16.6的转换工具

Cadence17.x版本降低到16.6版本转换工具 下载链接:Cadence17.x版本降低到16.6版本转换工具   使用方法: 软件使用比较简单,在「第一个路径输入栏」浏览指向17.x的设计文件,也就是需要降版本的17.4或者17.2的文件,然后在「第二个路径输入栏」里浏览指向转换后的文件保存路径,然后点击「转换」按钮即可。 ...

ltqdxl的博客 1万+

Maven项目 java.sql.SQLException: com.mysql.jdbc.Driver

将原有javaWeb项目添加maven支持后,引入相同版本jar包,连接数据库报错 但是在本地@Test单元测试正常 需要自己手动添加jar包,可以解决,原因未知

弦断的马丁的博客 636

【Unity Animation 2D】从零到一:骨骼绑定与IK动画实战指南

本文详细介绍了Unity中2D骨骼绑定与IK动画的实战流程,从角色素材准备、骨骼系统创建到权重绘制和IK设置,逐步指导开发者掌握2D动画制作技巧。通过反向动力学(IK)技术,实现更自然的角色动画效果,适用于游戏开发和动画制作。

weixin_30430677的博客 370

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题解决

java.lang.ClassNotFoundException: com.mysql.jdbc.driver的问题解决 用IDEA+maven出现的问题: 1.首先遇到这个问题比较尴尬,我犯了一个最简单的错误,就是如果大家仔细看的话就可以发现,我的报错是com.mysql.jdbc.driver,很明显,最后驱动器应该大写为Driver,这样就OK了。 2.接下来分析这个错误的其他原因:jar包...

qq_36760873的博客 2万+

Ruoyi-Cloud集成Seata2.0实现分布式事务

在网络上,关于Spring Cloud和Ruoyi-Cloud整合Seata的教程有很多,针对不同版本的 Seata 也有不少相关教程。事实上,无论是 Spring Cloud 还是 Ruoyi-Cloud,其整合 Seata 的原理基本相同。这篇博文将详细介绍如何在本地开发环境下,在中实现Seata 2.0的整合,希望能为大家在分布式项目中实现 Seata 的整合提供实用的帮助,提供一个清晰的操作思路。

SR003的博客 2246

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

通过JDBC连接MySQL

通过JDBC连接MySQL

cacique111的博客 567

YOLO11改进|卷积篇|引入多样化分支块DBB

YOLO11中添加多样化分支块DBB

A1983Z的博客 1448

Java实现JDBC编程

再配置该jar包到本项目的依赖中:右键点击项目Open Module Settings,在Modules中,点击项目,配置Dependencies,点击+,JARS or Directories,将该lib文件夹配置进依赖中,表示该文件夹下的jar包都引入作为依赖。数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。2. DataSource提供连接池的支持。

qq_61658398的博客 1010

(一)深入理解Bluez协议栈之蓝牙Mesh的支持(1/5)

BlueZ是Linux官方蓝牙协议栈。它是一个基于GNU General Public License (GPL)发布的开源项目,从Linux 2.4.6开始便成为Linux 内核的一部分。如果你是linux平台开发蓝牙的的工程师,肯定会接触过Bluez协议栈,hciconfig,hciattach,hciconfig等工具都是很好用的工具。

3321

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

如何实现Java的JDBC编程(基本概念,驱动包安装)

实现JDBC编程(基本概念,驱动包安装,代码)

Living_Amethyst的博客 947

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MySQL~什么是Java的JDBC编程、如何利用JDBC实现数据库的增删改查

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

2401_86963705的博客 439

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【MySQL】Java实现JDBC编程

操作和连接不同数据库都需要一种连接的软件组件,即数据库驱动包。数据库驱动包中包含了与特定数据库相对应的API,使得应用程序可以与数据库进行通信。而不同的数据库提供的API都不相同,从而造成很麻烦,这个时候JDBC就应运而生了,让Java连接数据库变得简单。executeQuery,executeUpdate都是Statement中的方法,前者用于查询,后者用于增加,删除。数据库编程必须掌握至少一门编程语言,一种数据库,会导入数据库驱动包。这是插入的程序,其他的操作和这区别不大,大家可以自己探索。

是小辰 609

Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

如风暖阳的博客 2932

JDBC—— 使用Java实现数据库编程

JDBC 什么是JDBC JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力 JDBC的工作原理 JDBC API 供程序员调用的接口与类,集成在java.sql和javax.sql包中,如: DriverManager类 Connection接口 Statement接口 ResultSet接口 DriverManager:管理各种不同的JDBC驱动 JDBC 驱动:负责连接各种不同的数据库 JDBC API JDBC API主要功能:与数

LIN7_J的博客 528

idea编程环境下java的JDBC编程 DBHelper的简单实现 通过MySql连接简单模拟用户的增删改查

今天写了一个idea 上关于JDBC的简单java程序 算是对java JDBC编程以及java编程的回顾吧 (太久没有写java,中间出现了好多奇怪的bug,顺带在这篇文章回顾这些个bug) 准备 首先准备jar 此处使用的jar版本 mysql-connector-java-5.0.8-bin.jar 在idea中导入jar包 默认装好jdk 导入步骤 在src下新建一个包将...

LMX_hello的博客 1111

Java之JDBC编程基本功能的实现

Java之JDBC编程基本功能的实现 如何连接数据库 如何对数据库进行基本的增删改查 连接数据库 以连接Mysql为例 一开始我尝试了直接用IDEA连接数据库,运行了一下代码但是说没有对应的包,经过网上查资料发现最后还是要把jar包导入到项目,后来直接导入了包,发现连接上了数据库,关了IDEA的数据库还是可以连接上,所以连接Mysql只要导入jar包就行了。 Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/

Who_Am_I 337

【Java】JDBC编程实现对数据库表的增删改查操作

在eclipse中创建Java项目,然后导入MySQL驱动jar包创建lib目录,用于存放当前项目需要的所有jar包选择jar包,右键执行build path / Add to Build Path。:用于执行静态的SQL语句,并返回一个结果对象。:Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。1.定义Student类,该类与前面创建的数据库表student的表结构相对应。Statement的子接口,用于执行预编译的SQL语句。:Java程序和数据库的连接对象。

m0_67388084的博客 6061

使用Java实现数据库编程-Lesson7-JDBC

 JDBC简介 Java是通过JDBC技术实现对各种数据库访问的,JDBC是Java数据库连接技术的简称,他充当了Java应用程序与各种不同数据库之间进行对话的媒介。它可以把数据持久保存,这就是一种持久化机制,这里涉及一个术语,持久化,持久化是将程序中的数据在瞬时状态和持久状态间转换的机制。通俗的讲,就是瞬时数据(如内存中的数据,不能永久保存)持久化为持久数据(如持久化至数据库中,能够长久保存)。...

weixin_40544803的博客 1023
上一篇: [JavaScript JQuery实现] 用你的方式来进行表单校验
下一篇: [ Linux ] 如何在Linux中安装 Java JDK
SolarL
博客等级 码龄9年 20粉丝 16原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值