`
l4432848
  • 浏览: 255380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC

    博客分类:
  • java
阅读更多

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

1.Statement接口

专门用于执行SQL语句的接口,还有一个PreparedStatement接口也可以执行SQL语句,Statement执行速度比较快,PreparedStatement执行效果更好。

怎么创建Statement?

通过Connection数据库连接对象来创建的。 先写一个数据库连接对象类,并测试一下是否正常连上数据库:

image

image

通过写一个类来专门获得数据库连接对象,这个类中定义一静态方法,用来返回数据库连接对象。以后可以直接使用

conn=DriverManager.getConnection(“”,””,””),来获得数据库连接对象。

测试使用一下Statement对象,这个对象的获得需要通过Connection对象来获得:

image

Statement sta=conn.createStatement();这是获得Statement对象的方法。

这样就有了SQL语句执行对象了,可以用这个对象来想数据库发送SQL语句去操作数据库了。

数据库语句最主要两部分:

1.DML更新语句

2.DQL查询语句

除此之外,DDL语句也能执行,不同的SQL语句应该使用Statement对象的不同的方法来进行执行。

更新语句该用Statement对象的哪个方法来执行?

sta.executeUpdate(),除了增insert、删除delete、改update、查select可以执行外,create、drop等DDL也可以使用executeUpdate来执行。它的返回值是int类型,是影响的行数。

使用executeUpdate()方法来执行create table:

image

用Statement对象发送一条创建表格的SQL语句,因为create table是创建语句,所以不会有影响的行数,因此返回的是0,:

image

然后看到表格创建成功。然后发送insert into语句来插入数据:

image

image

注意数据库中用单引号来标注字符串内容,因为新增一条数据,所以会影响一行,返回1.

再发送删除语句delete:

image

当前数据,然后执行delete语句,应该会有三行数据受到影响:

image

也可以使用sta.execute(SQL)来进行添加数据,它的返回值是boolean类型的。:

image

image

发送语句我们主要使用executeUpdate和execute这两个方法。

发送update语句来修改字段的值:

image

image

用java程序来发送SQL语句的时候,先在mysql数据库中执行一遍,保证SQL语句书写的正确性,然后再让java来发送SQL语句到数据库中。我们JDBC操作数据中的错误有很大一部分都是由于SQL语句书写错误而产生的。

批量执行SQL语句:

1.for循环来执行100次SQL语句:

image

image

这种方法执行SQL语句,是一条一条的来执行SQL语句,每插入一个数,执行一次SQL语句,共执行100次SQL语句。

还有一种方法,先用循环把所有要执行的SQL语句添加到批SQL中就是addBatch(SQL),然后再一次性执行批SQL中的所有SQL语句,相当于一次性执行SQL,executeBatch(),当然它最后执行多有的SQL语句的时候,到底是一次执行100条SQL还是分100次执行100条SQL,这个就要看具体的引擎的实现了。

image

image

执行的效果还是一样的。 这两种执行批量SQL的语句速度效率相近。

image

运行完批SQL后,可以清除批SQL语句。

批SQL是用于批量执行更新SQL语句的,不要拿去执行批量查询SQL语句,那是毫无意义的。

要执行查询SQL语句怎么办?

executeQuery(SQL),返回值是ResultSet,查询记录集。为啥返回的是接口ResultSet记录集而不是数组或者是集合呢?

这是为了让数据库方更好的去优化从数据库拿值到java程序的拿值方式,如果你写死成数组或者集合,那么你从数据库拿查询结果值到java程序的时候,你就要一次性把所有查询结果值一起拿过来,这时如果碰到查询数据量很大的情况下会耗时很多,而且你无法优化,所以,做成接口ResultSet的话,从数据库中把查询结果值拿出来的时候,是一条一条拿还是一批一批的拿,或者是一次性一起拿全部由数据库方你自己去决定,由数据库供应商去实现最优化的拿值方式。

ResultSet,查询记录集对象。查询出来的结果对象。

image

发送查询SQL语句到数据库中,然后得到查询记录集,这时有两种拿查询值回程序客户端的方法,一是一次性拿所有查询值回客户端程序,而是取一行拿一行(客户要用到一行数据的时候,就从查询记录集中拿一行数据出去。)在查询记录集中有一个取值游标,默认在最前方,有两个方法beforeFirst把游标移动到最前,afterLast把游标移动到最后,然后游标在最前的时候用next方法从前往后的方式拿值,游标在最后的时候用previous从后往前的方式拿值。

image

取值时是一行一行的取,取完一行就移动到下一行去取。

取记录集里面的值的时候,数据库表的列的类型有很多种的,你取值的方法的选取根据数据库表的列的数据类型来决定。 比如:

Char/varcha>>>>getString()

Int>>>>getInt()

Datetime>>>>getDate()

Boolean>>>>getBoolean()

Float>>>>getFloat()

Double>>>>getDouble()

这就是java方法里的类型和表的列数据类型的对应关系,在取值的时候,最好按上面的对照关系来一一对应选择相应的方法,或者你的java方法里的类型比表的列数据类型大,比如,数据库中是float你可以getFloat或者getDouble。

两种拿值方式:

1.通过序号拿值

2.通过列名拿值

按序号拿值:它这里的序号是第几列的意思,但是这个第几列有两种不同的情况:

1.SQL语句是select * from student,这个查询的记录集的列的顺序和数量和原始表是一样,这里的第几列就是和原始表的第几列是一样的:

image

image

image

但是如果SQL语句是select sname from student,这是的查询记录集只有sname一列,这种情况下的第一列的话就是sname,而不是sid了。:

image

image

还可以倒序拿值。

按列名来拿值:

image

这种拿值方式相较于按序号拿值来说还是很靠谱的。 按列名拿值的时候,要注意记录集里面是否有查相应的字段列,比如我select sname from student,则记录集中只有sname,如果你此时非要getString(“sid”),那肯定会报错的,还有就是如果查询的时候取了别名,就要按别名来取了,比如 Select sname name from student,这是如果你还getString(sname)也是会报错的:

image

image

image

如何从数据库中拿时间和日期的值?

首先我们的查询记录集里面的date是数据java.sql.Date,所以从里面取出来的值是sql包下的Date,但是这个sql包下的Date又是继承于java.util.Date的,所以根据多态,引包的时候,直接引java.util.sql里的Date就行了。

image

image

image

image

image

引包的时候出了Date可以引util下的Date,time和timestamp都是引sql包下的类。

ResultMetaData接口:

这个接口的对象通过记录集对象ResultSet对象的方法来获得:

Rsmd=rs.getMetaData();主要返回的是表的结构。主要是告诉你你查询出来的记录集里面的每个列的数据类型、大小、等信息,所以说此对象必须从记录集对象中获得。

用它来得到记录集中的表列结构信息:

image

可以查看查询记录集的信息:共有多少列?每列的列名?每列的数据类型?每列的显示数据长度?该列是否能为空?

image

使用ResultSetMetaData主要是用来探索记录集的表结构信息的。

作业代码:

image

image

image

0
0
分享到:
评论

相关推荐

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    《深入理解JDBC Driver 3.0:聚焦SQL Server JDBC》 在IT行业中,数据库连接是应用程序与数据存储之间的桥梁,而JDBC(Java Database Connectivity)则是Java平台中用于访问数据库的标准API。JDBC Driver 3.0是针对...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    SQL Server驱动包是用于Java应用程序通过JDBC(Java Database Connectivity)接口与Microsoft SQL Server数据库进行交互的必备组件。本文将详细介绍这两个重要的驱动文件——sqljdbc.jar和sqljdbc4.jar,以及如何...

    sqljdbc和sqljdbc4 sqlserver最新驱动

    SQLJDBC和SQLJDBC4是Microsoft为Java应用程序提供的用于连接SQL Server数据库的驱动程序。这两个版本都是JDBC(Java Database Connectivity)驱动,允许Java开发者在应用程序中与SQL Server进行交互。下面将详细介绍...

    Spring Data JDBC与JDBC的区别

    Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...

    mysql jdbc 驱动 适用于5.6版本及以下数据库

    mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及...

    mysql jdbc 驱动 适用于5.7及以上版本数据库

    mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...

    sqljdbc41、sqljdbc42的官方jar包

    在Java编程语言中,JDBC(Java Database Connectivity)是一个核心的API,用于连接Java应用程序与各种类型的数据库。这里我们关注的是两个特定版本的Microsoft SQL Server的JDBC驱动:sqljdbc41.jar和sqljdbc42.jar...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    在给定的压缩包文件中,包含了三个不同版本的达梦JDBC驱动,分别是Dm7JdbcDriver16.jar、Dm7JdbcDriver17.jar和Dm7JdbcDriver18.jar。 1. **JDBC驱动介绍**: JDBC是Java中用于与各种数据库进行交互的标准接口,它...

    sqljdbc4.jar和sqljdbc.jar下载

    sqljdbc.jar 类库提供对 JDBC 3.0 的支持。 sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。 注意: JDBC Driver 2.0 不支持 JRE 1.4。...

    sql server2000 jdbc

    SQL Server 2000 JDBC 是Java编程语言与Microsoft SQL Server 2000数据库进行交互的一种重要方式。JDBC(Java Database Connectivity)是Java API,允许Java应用程序通过Java虚拟机(JVM)与各种数据库建立连接。在...

    Access_JDBC30

    标题 "Access_JDBC30" 暗示了这是一个与Microsoft Access数据库相关的Java JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言中用于连接和操作数据库的标准接口。这个jar包,"Access_JDBC30.jar",...

    kingbaseV8 jdbc 驱动

    KingbaseV8 JDBC驱动是连接KingbaseV8数据库的重要组件,允许Java应用程序通过JDBC(Java Database Connectivity)接口与数据库进行交互。JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...

    sqljdbc4(sqlserver jdbc驱动下载和安装)

    在IT行业中,数据库是至关重要的组成部分,而SQL Server作为一款广泛应用的关系型数据库管理系统,它的连接与操作离不开JDBC(Java Database Connectivity)驱动。本篇将详细介绍如何下载和安装sqljdbc4,这是...

    access的jdbc驱动

    Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...

    java jdbc 需要包

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...

    sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar三个包

    标题中的"sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar"是指Microsoft SQL Server为Java应用程序提供的Java Database Connectivity (JDBC)驱动程序。这些JAR文件是数据库连接的关键,允许Java代码与SQL Server进行...

    sqljdbc 3.0及4.0

    `sqljdbc`是Microsoft提供的一个驱动程序,使得Java应用程序能够与SQL Server数据库进行交互。在这个场景中,我们关注的是`sqljdbc 3.0`和`4.0`版本,这两个版本都是专门为Java设计的,用于连接SQL Server 2000。 `...

    sqljdbc42.jar、sqljdbc41.jar 更新日期2017-12-21

    标题中的"sqljdbc42.jar、sqljdbc41.jar 更新日期2017-12-21"指的是Microsoft SQL Server的Java Database Connectivity (JDBC) 驱动的两个不同版本,它们分别对应于Java SE 7和Java SE 8的兼容性。JDBC驱动是Java...

Global site tag (gtag.js) - Google Analytics