JDBC总结

各种数据库版本与DriverClassName对应关系 需要注意的是,SQL Server的版本号可能因为不同的产品和组件而有所不同,以上列举的是SQL Server数据库的主要版本号。需要注意的是,PostgreSQL的版本号可能因为不同的产品和组件而有所不同,以上列举的是PostgreSQL数据库的主要版本号。但是,不同版本的驱动程序可能具有不同的功能和特性,因此建议在使用特定版本的Oracle数据库时,选择与该版本兼容的JDBC驱动程序。需要注意的是,Oracle的版本号可能因为不同的产品和组件而有所不同,以上列举的是Oracle数据库的主要版本号。 阅读详情

目录

什么是Jdbc:

Jdbc的执行顺序: ​编辑

加载并注册数据库驱动:

​编辑

Connection对象

通过这种方式获取Connection对象会有什么问题?

使用properties文件解决硬编码问题

将部分代码抽离写出JdbcUtils工具类

Statement对象

使用Statement对象会遇到什么问题:sql注入

sql注入是什么:

sql注入如何解决:

造成SQL注入的原因

PrepareStatement对象

Sql注入演示: 

ResultSet对象

连接池对象

什么是数据库连接池?

为什么要有数据库连接池?

获取数据库缓冲池的代码示例:


声明部分图片来自百战尚学堂

什么是Jdbc:

JDBC定义了在Java语言中连接数据库的标准,当我们查询数据时就需要使用到数据库驱动,而不同的数据库有不同的驱动,java通过jdbc标准屏蔽了这种不同,将不同化为相同,应用程序只要实现了JDBC且驱动实现了JDBC那么就可以用不同的驱动

Jdbc的执行顺序: 

加载并注册数据库驱动:

首先我们需要导入外部数据库驱动,我们这里使用的是mysql的数据库驱动,大家要的话可以拿去:

百度网盘链接:https://pan.baidu.com/s/1wmdtKDnxIOxc1jpIRE6Ndw?pwd=2bkx 
提取码:2bkx

我们可以通过反射机制Class.forName(数据库驱动名称)加载数据库驱动器,在mysql数据库jar包中有一个jdbc包,mysql实现了java的jdbc标准,在该包下有一个Driver类,这个类就是用来加载并注册驱动器的

 我们可以通过他的源码可知:

该类的代码中有一段静态代码块,静态代码块在类加载时加载,只会加载一次,所以当我们通过反射机制加载数据库驱动器时,相当于调用了该类的静态代码块

那么为什么要放到静态代码块中呢,如果你放在非静态的方法里,那么就表示他是和对象有关的
可是我们一般都只是想加载驱动后,得到一个Connection而已,跟对象一点关系都没有,那么又为什么要去实例一个对象先,然后再得到一个Connection这么劳累的事

mysql数据库的url:jdbc:mysql://localhost:数据库端口号/数据库名?useSSL=false

代码示例:

Connection对象

java会将加载好的数据库驱动放在DriverManager类中,我们可以通过DriverManager调用getConnection(String url,String username,String password)静态方法获取Connection对象,而这个方法需要传递三个参数,

第一个就是数据库驱动的url,因为java会将加载好的数据库驱动放在DriverManager类中,那都是数据库驱动java咋知道我们用的是哪个数据库驱动呢,所以我们需要使用数据库驱动的url进行获取相对应的数据库连接

mysql数据库的url:jdbc:mysql://localhost:数据库端口号/数据库名?useSSL=false

第二个是登录数据库的用户名

第三个是登录数据库的密码

代码示例:

通过这种方式获取Connection对象会有什么问题?

 通过这种方式获取Connection对象会有硬编译的问题,硬编码是指将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。

使用properties文件解决硬编码问题

通过properties属性文件可以解决这种问题,这种文件以key=value格式存储内容。Java中可以使用Properties工具类来读取这个文件。项目中会将一些配置信息放到properties文件中,所以properties文件经常作为配置文件来使用。

Properties工具类中常用方法

load(InputStream is)        通过给定的输入流对象读取properties文件并解析

getProperty(String key)        根据key获取对应的value

我们可以将url、username、password这些可变的变量提取放到properties文件中

然后通过Properties对象的getProperty(String key)方法,传递key参数返回对应的value

try(//通过字节输入流读取properties文件
            FileInputStream fis = new FileInputStream("src/jdbc.properties")){
            //实例化Properties对象
            Properties prop = new Properties();
            //解析读取到的properties文件
            prop.load(fis);
            //读取连接数据库的url
            url = prop.getProperty("url");
            //获取用户名
            name = prop.getProperty("username");
            //获取密码
            pwd = prop.getProperty("pwd");
            //获取数据库驱动全名
            String driver = prop.getProperty("driver");
            //通过反射机制加载数据库驱动
            Class.forName(driver);
        }catch (Exception e){
            e.printStackTrace();
        }

然后我们就可以通过DriverManager创建Connection对象了,而此时每当我们需要加载mysql连接时就得这么写岂不是太麻烦了,所以我们可以将这部分代码抽离出来写一个Utils工具类

将部分代码抽离写出JdbcUtils工具类

此时我们可以看到我将这段代码放到了静态代码块中,为什么呢,我们可以参考一下mysql的jdbc包中的Driver类,它通过了静态代码块进行数据库驱动器的加载,而静态代码块在类加载时执行一次,之后就会再执行了

而我们操作properties文件是需要用到IO流的,大家都知道IO流是比较耗时间的,而且操作properties文件只需要执行一次就好了,所以我们直接将操作properties文件的代码放到静态代码块中

然后定义了getConnection方法,该方法的返回值是Connection对象,通过该方法我们可以获取到mysql的连接器

/**
 * Jdbc工具类
 */
public class JdbcUtils {
    private static String url;
    private static String name;
    private static String pwd;
    static{
        try(//通过字节输入流读取properties文件
            FileInputStream fis = new FileInputStream("src/jdbc.properties")){
            //实例化Properties对象
            Properties prop = new Properties();
            //解析读取到的properties文件
            prop.load(fis);
            //读取连接数据库的url
            url = prop.getProperty("url");
            //获取用户名
            name = prop.getProperty("username");
            //获取密码
            pwd = prop.getProperty("pwd");
            //获取数据库驱动全名
            String driver = prop.getProperty("driver");
            //通过反射机制加载数据库驱动
            Class.forName(driver);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
 
    //获取数据库连接对象
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url,name,pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

而Connection对象时需要关闭的,包括后期的Statement对象,ResultSet对象都是需要关闭的,而且他们经常联合使用所以我们再添加一些关闭这些对象的方法
 

//关闭连接对象
    public static void closeConnection(Connection connection){
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //提交事务
    public static void commit(Connection connection){
        try {
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //事务回滚
    public static void rollback(Connection connection){
        try {
            connection.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //关闭Statement对象
    public static void closeStatement(Statement statement){
        try {
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //关闭ResultSet
    public static void closeResultSet(ResultSet resultSet){
        try {
            resultSet.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //DML操作时关闭资源
    public static void closeResource(Statement statement,Connection connection){
        //先关闭Statement对象
        closeStatement(statement);
        //再关闭Connection对象
        closeConnection(connection);
    }

    //DQL操作时关闭资源
    public static void closeResource(ResultSet resultSet,Statement statement,Connection connection){
        //先关闭ResultSet
        closeResultSet(resultSet);
        //再关闭Statement
        closeStatement(statement);
        //最后关闭Connection
        closeConnection(connection);
    }

Statement对象

Statement对象有张图就说过了,它是用来执行sql语句的,我们通过Connection对象下的createStatement()方法创建Statement对象

Statement执行sql语句的代码编写顺序:

1、首先先搭建好try…catch…finally框架,并且在try语句外声明Connection和Statement对象

2、获取Connection连接

3、通过Connection对象的createStatement()方法创建Statement对象

4、编写sql语句

5、Statement对象调用execute(String sql)传递sql语句来执行sql

6、关闭Statement对象、Connection对象

注意:先关闭Statement对象再关闭Connection对象

那执行sql语句首先我们得要有表把,所以我们这里创建一个表叫users,userid为主键列

 代码示例:实现向users表添加数据,这里主要是看代码的编写顺序,sql语句怎么写完全是看你自己,execute()方法返回的是一个布尔值,如果sql语句执行过后有结果集返回true,没有结果集返回false

添加用户:

 

使用Statement对象会遇到什么问题:sql注入

sql注入是什么:

可以用它来从数据库获取敏感信息、利用数据库的特性执行添加用户、导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。

sql注入如何解决:

使用PreparedStatement对象执行sql语句

造成SQL注入的原因

程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的 SQL 脚本,程序在接收后错误的将攻击者的输入作为 SQL 语句的一部分执行,导致原始的查询逻辑被改变,执行了攻击者精心构造的恶意 SQL 语句。

PrepareStatement对象

PreparedStatement对象拥有预编译sql语句的能力,我们可以使用通配符(?)代替参数部位,PreparedStatement对象可将sql语句和参数分离,预编译sql语句过后再绑定参数

PreparedStatement对象执行sql语句代码编写顺序:

1、首先先搭建好try…catch…finally框架,并且在try语句外声明Connection和PreparedStatement对象

2、获取Connection对象

3、编写sql语句参数部位通过通配符(?)占位

4、通过Connection对象的prepareStatement()方法创建PreparedStatement对象

5、sql语句中的参数绑定,需要传递?的位置(?的位置从1开始)

6、preparedStatement对象通过execute()方法执行sql语句

7、关闭PreparedStatement对象、Connection对象

代码示例:

根据userid修改用户信息username、userage

这段代码就遵循了我们刚刚写PreparedStatement对象执行sql语句的代码编写顺序,这里主要要讲的是绑定参数是通过preparedStatement对象调用set参数类型(通配符位置,参数);通配符位置从1开始

那么学到这里大家可能云里雾里,哎呀这跟sql注入有毛关系啊,这样子还不如使用Statement对象呢,不是这样的下面我们就来演示一下sql注入

Sql注入演示: 

我们刚刚说过Statement对象会出现sql注入的问题,那么我们就使用Statement对象来演示一下sql注入,这里先声明一下这个ResultSet是接收查询到的结果集的,executeQuery()方法就是执行DQL语句的,这些在ResultSet对象讲解中会详细的讲

现在我们来看sql语句的编写,此时sql语句是通过字符串拼接的方式将参数写入的,查询users表中用户名username为xxx并且用户年龄userage为xxx的用户信息,顺便将拼接过后的sql语句输出出来

这是users表中所有用户信息

  

 现在我们来些一个测试类,测试类中用户名我们这么写:"oldlu 'or 1=1 -- " ,按理来说此时执行sql语句进行DQL操作是没有结果的因为我们根本就没有这个名字的人

执行过后我们会发现,我们查询除了所有用户的信息,这是一个非常可怕的问题,攻击者通过改变DQL操作的逻辑,查询到所有用户的信息,这相当于就是数据泄露了呀

此时我们可以看看sql语句在拼接过后是什么样的,查询users表中用户名username = 'oldlu'或者 1=1的用户信息,后面的--在mysql中是注释的意思,所以后面相当于注释掉了。or就是或者的意思,一方为true就为true,而1=1永远都为true,所以这个条件将永远成立,那么就可以查询出所有用户的信息

sql注入就是通过更改我们DQL查询的逻辑进行从数据库获取敏感信息

那么PreparedStatement对象为什么就不会出现sql注入的问题呢?刚刚不是说了嘛,PreparedStatement对象先预编译sql语句,然后再将参数绑定,所以不管怎样都不会对我们的查询逻辑进行改变

我们使用PreparedStatement对象模拟一下sql注入看是否会出现问题,在执行sql语句过后输出sql语句

 通过测试类再次进行sql注入

 通过结果我们可以发现参数绑定过后sql语句照样还是和我们编写的DQL查询逻辑一样,这就说明了预编译功能的作用,就是说不管我们输入的参数是什么他就只是一个参数,不是通过Statement字符串拼接那样可以改变DQL查询的逻辑。

ResultSet对象

ResultSet用来存放数据库查询操作获得结果集,通过对ResultSet的操作可以获取查询到的结果集数据。

ResultSet特点

  • ResultSet 对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行;因为该方法在 ResultSet 对象中没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。
  • 默认的 ResultSet 对象仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。
  • ResultSet 接口提供用于获取当前行检索列值的获取方法(getBoolean、getLong 等)。可以使用列的索引位置或列的名称检索值。

ResultSet使用原理

代码示例:

连接池对象

什么是数据库连接池?

为数据库建立一个缓冲区,预先在缓冲区中创建多个连接对象,当我们需要使用时就从缓冲池中拿连接对象,使用完之后返还给缓冲池

为什么要有数据库连接池?

如果我们使用直连的方式每次向数据库建立连接然后获取Connection对象,用完之后关闭,这样子就会浪费资源和时间,为什么我们不在代码运行之前就建立好一个缓冲区,当我们需要使用连接时就通过缓冲区获得连接,用完之后返还不就好了吗

获取数据库缓冲池的代码示例:

Java使用DataSource存放数据库连接池对象,而数据库缓冲池有很多种第三方的,我们这里使用的是阿里的Druid,阿里的数据库缓冲池性能较好,大家如果想要可以通过一下连接获取,获取过后在项目路径下创建一个lib目录用于存放jar包,这个目录名字是你自己定的,然后将jar包拉进去即可,最后右键添加为库才能使用

 百度网盘链接:https://pan.baidu.com/s/1ssYWSdVEo10OZkn_CyO_cQ?pwd=j913 
提取码:j913

通过DruidDataSourceFactory的静态方法createDataSource(Properties pos);传递存放了数据库url,用户名,密码的Properties对象,创建连接池对象

properties文件:

 initialSize代表的是初始化容量,就是说这个缓冲池中初始化时里边放多少个数据库连接对象

maxActive代表最大容量,代表该缓冲池中的数据库连接对象不允许超过这么多个

driverClassName指的是数据库驱动的全名,Druid通过加载这个类获取数据库驱动器

/**
 * 基于Druid连接池获取数据库连接的工具类
 */
public class JdbcDruidUtils {
    //连接池对象
    private static DataSource ds;
    static{
        //加载Druid配置文件
            FileInputStream fis;
            try {
                //获取读取Druid配置文件的输入流
                fis = new FileInputStream("src/druid.properties");
                //创建Properties对象
                Properties pos = new Properties();
                //加载Druid配置文件
                pos.load(fis);
                //获取连接池对象
                ds = DruidDataSourceFactory.createDataSource(pos);
 
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
}

要点:记住PreparedStatement对象执行sql语句的代码编写顺序,Statement对象以后不常用

1、搭建try...catch...finally矿建,try上边声明Connection对象和PreparedStatement对象

2、获取连接Connection

3、编写sql语句

4、通过Connection对象的prepareStatement(String sql)方法创建PreparedStatement对象并且预编译sql语句

5、参数绑定

6、PreparedStatement对象调用execute()方法执行sql语句

7、关闭PreparedStatement对象、Connection对象

注意:一定要先关闭PreparedStatement对象再关闭Connection对象

什么是JDBC?JDBC的作用是什么? JDBC是Java数据库连接(Java Database Connectivity)的简称,它是一套用于执行SQL语句的Java API。 JDBC的作用在于为Java程序提供了一个标准化的接口,用于访问和操作各种关系型数据库。通过JDBC,开发者可以使用Java语言编写的程序来连接数据库,执行查询、更新、删除等操作,而无需关心底层数据库的具体实现细节。 阅读详情

相关推荐

问题解决:打开VMware创建的虚拟机,电脑立刻蓝屏并重启

VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti

weixin_55118477的博客 3万+

MySQL的driverClassName、url

DB2: driverClassName: com.ibm.db2.jcc.DB2Driver url: jdbc:db2://localhost:50000/sample Oracle: driverClassName: oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@localhost:1521:orcl MySql: d...

kaven 5万+

AD20/Altium designer——元器件批量命名与编号的高效技巧

本文详细介绍了在AD20/Altium Designer中实现元器件批量命名与编号的高效技巧。通过解析核心的“原理图标注”功能,从基础全局操作到进阶的按模块分区、利用标识符及合并BOM等智能方法,帮助硬件工程师彻底告别手动编号,大幅提升设计效率与文档规范性,并融入了一套完整的实战工作流。

whisky的博客 565

连接池中的参数解释

name:表示你的连接池的名称也就是你要访问连接池的地址 auth:是连接池管理权属性,Container表示容器管理 type:是对象的类型 driverClassName:是数据库驱动的名称 url:是数据库的地址 username:是登陆数据库的用户名 password:是登陆数据库的密码 maxIdle,最大空闲数,数据库连接的最大空闲时间

Mr丶GUO 1309

基于51单片机语音识别智能台灯设计

智能台灯;语音识别;STC89C52RC单片机

Benso_H的博客 5834

关于Win11安装Ubuntu子系统报错:WslRegisterDistribution failed with error 解决办法

Win11安装Ubuntu子系统报错:WslRegisterDistribution failed with error

qq_51908382的博客 3万+

数据库几种常见的driverClassName和url

以下是几种数据库的driverClassName和url的对应的内容的总结 复制代码 1 # Properties file with JDBC-related settings. 2 ########## 3 # HSQLDB # 4 ########## 5 #jdbc.driverClassName=org.hsqldb.jdbcDriver 6 #jdbc.url=jdbc:hsqldb:hsql://localhost:9001/bookstore 7 #jdbc.username=sa 8 #j

spt_dream的博客 1800

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案

本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。

cc789的博客 1062

Springboot2配置之 spring.datasource

DataSource相关配置: spring.dao.exceptiontranslation.enabled: 是否开启PersistenceExceptionTranslationPostProcessor,默认为true spring.datasource.abandon-when-percentage-full: 设定超时被废弃的连接占到多少比例时要被关闭或上报 spring.datasource.allow-pool-suspension: 使用Hikari pool时,是否允许连接池

kfepiza的博客 4251

避坑指南:ZYNQ MPSOC QSPI固化时MT25QU256闪存的特殊配置

本文针对Xilinx ZYNQ UltraScale+ MPSoC平台,详细解析了使用Vitis工具将BOOT.bin固化至Micron MT25QU256ABA QSPI NOR Flash时的特殊配置与避坑指南。重点阐述了Init文件的真实作用、电压与频率的精确匹配策略,以及针对该闪存型号的初始化序列,帮助工程师解决烧录失败、启动异常等常见问题,确保系统可靠启动。

weixin_29175469的博客 263

手把手教你学Simulink实例--基于Simulink的电动汽车无线充电效率优化仿真

​市场规模:2025年全球无线充电市场规模将达$27亿(MarketsandMarkets数据)​技术标准Qi v1.3(最高150W)WiTricity(200W动态功率)ISO 17163(道路车辆无线充电)​节能效果:每kWh充电减少120W损耗(按每天8小时)​成本分析线圈成本:35vs58(传统方案)效率提升带来的续航增加:15km/100km。

xiaoheshang_123的博客 341

jdbc

文章目录一,什么是JDBC二,JDBC的原理三,程序员,JDBC,JDBC驱动的关系及说明四,JDBC的总结五,JDBC连接数据的步骤六,JDBC连接数据的详细步骤 一,什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。 二,JDBC的原理 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他

qq_43623447的博客 2万+

3、固定翼无人机模型解析

本文详细解析了固定翼无人机的动力学模型与纵向模型,涵盖位置、速度、角度及角速度的变化率方程,并介绍了力和力矩的计算方法以及气动系数的表达式。通过关键参数分析,探讨了速度、迎角和倾斜角对飞行性能的影响。文章还展示了模型在编队飞行和任务规划中的应用,并提出了参数优化与先进控制策略等优化思路,为无人机飞行控制系统设计提供了理论基础。

gaochao的博客 239

JDBC是什么

JDBC(Java Database Connectivity, Java 数 据 库 连 接)是 一 种可用于执行 SQL 语句的 Java API(Application Programming Interface, 应用程序设计接口)。它由一些 Java 语言编写的类和接口组成。JDBC 为数据库应用开发人员、数据库前台开发人员提供了一种标准的应用程序设计接口, 使开发人员可以用纯 Java 语言编写完整的数据库应用程序。

顺其自然~专栏 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JDBC概述(什么是JDBC?JDBC的原理、Mysql和Sql Server入门JDBC操作)

本篇文章主要介绍JDBC概述(什么是JDBC?JDBC的原理、Mysql和Sql Server入门JDBC操作)简单入门知识以及部分理论知识 JDBC是Java Database Connectivity的缩写 是一种用于Java程序访问关系型数据库的API(应用程序接口)。 1. Java语言的跨平台性:JDBC可以在各种操作系统和计算机体系结构上运行,这使得使用Java开发的应用程序可以方便地与不同类型的数据库进行交互。 2. 标准化:JDBC是一个标准化的API,提供了一致的访问关系数据库的方法,使

Jin_Xiang123的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JDBC | JDBC快速入门

本文讲解了JDBC的基础代码,帮助大家可以快速上手JDBC,感受JDBC的使用过程

BoBooY的Java学习笔记 1782

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

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

JDBC详解——JDBC常用接口

JDBC: JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。程序可以通过JDBC API连接到关系数据库,并使用结构化查询语言(SQL,数据库标准的查询语言)来完成对数据库的查询和更新。 JDBC执行事件: 建立与数据库的连接; 执行SQL语句; 获得SQL语句的执行结果。 JDBC驱动程序: ...

threelifeadv的博客 8111

Spring JDBC - Spring JDBC模版使用

Spring JDBC模版;Spring JDBC支持类

weixin_52937170的博客 1578

Java数据库连接—JDBC(JDBC详解、JDBC控制事务、C3P0连接池、Druid连接池、Spring JDBC-JDBC Template)

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。下面有部分截图希望能对大家有所帮助。

2401_84003809的博客 993

JDBC原理&浅析HIVE-JDBC

目录 {:toc} 什么是JDBC? JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。Java8 JDBC API 使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。 例如,我们在Java代码中如果要访问MySQL,那么必须编写代码操作JDBC接口。注意到JDBC接口是Java标准库自带的,所以可以直接编译。而具体的JDBC驱动是.

梦境迷离 3581

JDBC总结——JDBC工具类

文章目录JDBC工具类一、JDBC工具类概述1、定义JDBC工具类的目的2、封装的操作二、JDBC工具类的封装1、dbcp.properties2、JdbcUtil3.java3、JdbcTemplate.java JDBC工具类 一、JDBC工具类概述 1、定义JDBC工具类的目的 每次使用JDBC的时候都要书写冗长的代码段,不符合复用的理念,于是要单独写一个类,将通用的JDBC操作写到一个类...

weixin_44157233的博客 1929

JDBC

标题 今日内容 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:(Java DataBase Connectivity) Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。 * 各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门: * 步骤: 1. 导入驱动j

qq_28728655的博客 3085

JDBC是什么?JDBC连接Mysql完整操作案例

是Java平台下用于数据库连接和操作的标准API,是一套接口和类的集合,它是由Sun Microsystems公司(现已被Oracle公司收购)最早提出的,目的是让Java应用程序能够与各种数据库系统进行交互。通过JDBC,Java程序员可以使用统一的接口来执行SQL语句、处理结果集,并与关系型数据库管理系统(RDBMS)进行通信。

wangyufei0815的博客 1257

JDBC版本简介

JDBC 版本是 JDBC 软件的发布,在 JDK 实现中有多个可用的 JDBC 版本。JDBC 目前的稳定版本是 4.3,发布于2017 年 9 月21日,版本 4.3 是一个稳定的版本,这意味着我们可以使用此版本实现 API 软件。第一个版本于1997年发布,其版本名称为JDBC 1.2,这是JDBC的第一个稳定版本。在发布版本 1.2 之后,许多稳定版本在 JDK 实现中发布,JDBC 4.0 及更高版本都支持 java SE 环境。

allway2的博客 3163

【JDBC上篇】什么是JDBC

既然是一套接口,接口都有调用者和实现者,面向接口调用,面向接口写实现类,都属于面向接口编程。面向接口编程的优势是解耦合,降低程序的耦合度,提高程序的扩展力。数据库的驱动大多以jar包的形式存在,解压后得到很多class文件,这些class文件就是对JDBC接口的实现,驱动由各大数据库厂家提供。getString方法传入列名的时候,传入的是查询结果集的列名。getString方法可以传入列的下标(JDBC中下标从1开始),也可以传入列名,但后者更加健壮。实际开发中,不要把数据库的信息写死在Java程序中。

llg___的博客 780

JDBC概述

JDBC是一种可用于执行SQL语句的JavaAPI,是连接数据库和Java应用程序的纽带。 一、JDBC-ODBC桥 JDBC-ODBC桥是一个JDBC驱动程序,完成了从JDBC操作到ODBC操作之间的转换工作,运行JDBC驱动程序被用作ODBC的驱动程序。使用JDBC-ODBC桥连接数据库的步骤如下: 1、先加载JDBC-ODBC桥的驱动程序。代码如下: Class.forNam...

为你灯明三千的博客 782
上一篇: Jdbc数据库连接池
下一篇: HTML5的总结
c_mmmmmmm
博客等级 码龄5年 18粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值