`
逍遥绝情
  • 浏览: 1410 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC笔记

阅读更多

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

JDBC笔记

JDBCJava Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC为开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够使用java API编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。

JDBC为我们提供了java连接数据库的驱动。而这个驱动也是由Java开发出来的,我们只需要将这个驱动放进项目中,通过这个驱动,我们就可以用Java连接数据库,进行数据库的管理操作。

了解:JDBCODBC的区别

二者皆可以实现对数据库的操作(连接、增删改查、建库建表)。

<!--[if !supportLists]--><!--[endif]-->JDBCSUN开发的java连接数据库的标准

<!--[if !supportLists]--><!--[endif]-->ODBC是微软开发的,C语言的

1准备工作

1.0 数据操作步骤

<!--[if !supportLists]--><!--[endif]-->注册驱动(只做一次)

<!--[if !supportLists]--><!--[endif]-->建立数据库连接

<!--[if !supportLists]--><!--[endif]-->创建执行SQL的语句(Statement

<!--[if !supportLists]--><!--[endif]-->执行SQL语句

----如果是查询,需要处理执行的结果(如:接收查询数据)

<!--[if !supportLists]--><!--[endif]-->释放资源(千万不要漏了)

1.1 创建java工程

项目名的命名规范:项目名全部小写。创建一个java工程:jdbcproject

1.2 导入jar

使用JDBC操作数据库,需要导入JDBC的驱动包:mysql-connector-java-5.1.39.jar

在项目下面创建一个文件夹:lib,将驱动包复制到lib下面,并将jar包加载到项目中,如下图所示:

<!--[if !supportLists]--><!--[endif]-->新建lib文件夹:

 

 

<!--[if !supportLists]--><!--[endif]-->jar包复制到lib文件夹下面:

 

<!--[if !supportLists]--><!--[endif]-->选中jar包,单击右键,在弹出的窗口中选择“Add to Build Path” ,将jar包加载到项目中:

 

这时,我们可以在项目的引用包中看到我们引用的jar包:

 

 

2JDBC连接数据库

经过上面的准备工作,我们就可以开始使用Java连接数据库了。

2.1 加载JDBC驱动

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVMJava虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现。

try {

// 加载MySql的驱动类

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

} catch (ClassNotFoundException e) {

System.out.println("找不到驱动程序类 ,加载驱动失败!");

e.printStackTrace();

}

成功加载后,会将Driver类的实例注册到DriverManager类中。

加载驱动时,如果我们项目中没有导入驱动包或者驱动的名字不对,会出现驱动加载失败的异常。异常信息:

 

 

 

2.2 提供JDBC连接的参数

连接数据库时,需要下面几个参数:

url=jdbc:mysql://localhost:3306/database_name

username=root

password=1111

 

//这个可以解决中文乱码,在最后面可以设置编码,这里设的是utf-8

url = "jdbc:mysql://localhost:3306/yunlian??autoReconnect=true&autoReconnectForPools=true&useUnicode=true&characterEncoding=utf-8";

其中,usernamepassword是连接数据库的用户名和密码,一般默认的用户名是root,密码是安装MySQL时的密码。url是连接数据库的地址。

当我们访问的是本机的数据库的时候,url的值也可以为“jdbc:mysql:///database_name

2.3 创建数据库的连接

通过DriverManager类创建数据库连接对象ConnectionDriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,根据数据库的URL、用户名和密码,创建一个JDBC Connection 对象。

try {

//试图建立到给定数据库 URL 的连接

Connection con = DriverManager.getConnection(url, username, password);

} catch (SQLException e) {

System.out.println("数据库连接失败!");

e.printStackTrace();

}

上面需要导入的包都是java.sql的包,如下所示:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

在连接数据库时,如果数据库不存在,或者用户名、密码错误,会出现连接数据库失败的异常

用户名或者密码错误:

 

当我们的url中的数据库不存在的时候:

 

URL中的IP或者主机连不上的时候,就会出现连接超时的异常:

 

当数据库端口号写错的时候,会出现连接被拒绝:

 

3、数据库操作

数据库操作分为更新和查询两种操作。

我们想要执行SQL语句,就必须要创建一个java.sql.Statement对象Statement对象可以将SQL语句发送到数据库,并返回一个执行结果(如:添加数据时会返回数据库的影响行数)。

Statement实例分为以下3种类型:

<!--[if !supportLists]--><!--[endif]-->执行静态SQL语句。通常通过Statement实例实现

<!--[if !supportLists]--><!--[endif]-->执行动态SQL语句。通常通过PreparedStatement实例实现

<!--[if !supportLists]--><!--[endif]-->执行数据库存储过程。通常通过CallableStatement实例实现(Oracle会讲)

3.0 StatementPreparedStatement

StatementPreparedStatement两者都可以把SQL语句从Java程序发送到指定数据库,并执行SQL语句,但是他们也具有如下区别:

<!--[if !supportLists]--><!--[endif]-->Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出;

<!--[if !supportLists]--><!--[endif]-->PreparedStatement会形成预编译的过程,对于多次重复执行的语句,PreparedStatement的效率要高一些,而且适合批处理数据(批量添加);

<!--[if !supportLists]--><!--[endif]-->最重要的是,PreparedStatement能有效防止危险自负的注入,即SQL注入问题。

 

根据比较结果可知,我们需要选用PreparedStatement更好、更快速、更安全。因此,在以后的JDBC操作中,建议使用PreparedStatement

Statement接口提供了两种常用的执行SQL语句的方法:executeQuery executeUpdateexecuteUpdate一般用于添加、删除、修改数据;executeQuery一般用于查询数据。

PreparedStatement接口继承自StatementPreparedStatementsql语句中通过使用占位符?来代替常量字段值,setXXX方法来填充字段值,取代掉占位符,形成完整的可执行的sql语句。

3.1 添加数据

<!--[if !supportLists]--><!--[endif]-->静态SQL添加

// connection.createStatement():

// 创建一个 Statement 对象来将 SQL 语句发送到数据库。

statement = connection.createStatement();

// executeUpdate(String sql):执行给定 SQL 语句,该语句可能为 INSERTUPDATE

// DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

// 添加数据

 String sql = "insert into test(id,username,birthday)

 values('15','张三','1999-09-09')";

 int rows = statement.executeUpdate(sql);//返回的结果是受影响的行数

 System.out.println(rows+"");

 

 

<!--[if !supportLists]--><!--[endif]-->动态SQL添加

String sql = "insert into user(username,password) values(?,?)";

ps = connection.prepareStatement(sql);

////给占位符赋值

////setNString(int parameterIndex, String value)

//          //将指定参数设置为给定 String 对象。

////位置编号从 1 开始,不是从零开始

ps.setString(1, "王五");//setString 表示的是该位置的参数需要字符串,对应数据库字段类型

ps.setString(2, "我是密码");

////执行SQL

int rows = ps.executeUpdate();

System.out.println(rows+"");

 

3.2 修改数据

<!--[if !supportLists]--><!--[endif]-->静态SQL修改

 

 

<!--[if !supportLists]--><!--[endif]-->动态SQL修改

 

 

3.3 删除数据

<!--[if !supportLists]--><!--[endif]-->静态SQL删除

 

 

<!--[if !supportLists]--><!--[endif]-->动态SQL删除

 

 

4释放资源

据库连接(Connection)是非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭将导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。

 

 

5、小结

<!--[if !supportLists]--><!--[endif]-->连接数据库时用到的三个类

<!--[if !supportLists]--><!--[endif]-->静态SQL与动态SQL的区别

<!--[if !supportLists]--><!--[endif]-->熟练使用动态SQL实现添加、修改、删除数据的功能

 

分享到:
评论

相关推荐

    JDBC笔记JDBC笔记JDBC笔记

    **JDBC(Java Database Connectivity)简介** JDBC是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,由Sun ...在提供的压缩包文件中,`JDBC笔记.doc`可能包含了更详细的讲解和示例,建议参考学习。

    很详细的jdbc笔记 决定经典

    这份"很详细的jdbc笔记 决定经典"显然是一个珍贵的学习资源,它涵盖了JDBC的基础和高级概念,对于想要深入理解数据库操作的Java开发者来说极具价值。下面我们将详细探讨JDBC的一些关键知识点。 1. **JDBC驱动程序**...

    JDBC笔记 李勇

    **JDBC笔记 李勇** JDBC(Java Database Connectivity)是Java编程语言中用来规范应用程序如何访问数据库的应用程序编程接口,提供了诸如连接数据库、发送SQL语句、处理结果集等功能。李勇老师的JDBC学习笔记主要...

    JDBC笔记.pdf

    本篇JDBC笔记详细介绍了JDBC编程的相关知识点,包括数据库连接、SQL语句执行、事务处理等,同时也涉及到了对MySQL数据库的增删改查操作和事务的ACID属性等重要概念。 首先,笔记中提到了JDBC驱动的概念。JDBC驱动是...

    jdbc笔记(自写)

    Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 ​ 保存数据: ​ 内存中: 掉电之后,数据就没了. ​ 磁盘...

    JDBC笔记.docx

    "JDBC 笔记" 本资源摘要信息主要介绍了 Java 数据库连接(JDBC)的相关知识,包括单例模式、JDBC 概述、JDBC 实现原理、JDBC 开发主要类和 JDBC 开发步骤等内容。 单例模式 单例模式是一种常用的软件设计模式,...

    JDBC笔记 方立勋

    **JDBC笔记 方立勋** JDBC(Java Database Connectivity)是Java编程语言中用来规范应用程序如何访问数据库的应用程序接口(API),它为开发者提供了一种标准的、面向对象的方式来访问各种不同类型的数据库系统。...

    JDBC笔记 JDBC笔记

    ### JDBC核心知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口集合,实质上是调用者(通常是开发者或应用程序)与数据库供应商之间的一种协议。这种协议允许开发者...

    JAVA 中JDBC笔记

    JAVA 中JDBC笔记

    JDBC笔记.md

    JDBC笔记.md

    jdbc笔记(简单易懂)

    自己整理jdbc笔记,跟大家共享下。。 自己整理jdbc笔记,跟大家共享下。。 自己整理jdbc笔记,跟大家共享下。。

    JSP JDBC 学习笔记(基础)

    在学习过程中,阅读提供的"jsp 基础教程.doc", "jsp学习 笔记.doc", "JDBC 笔记.doc", "jsp 笔记二.doc"文档,将有助于你深入理解JSP和JDBC的使用方法和最佳实践。这些笔记详细阐述了相关概念、示例代码和常见问题,...

    达内学习用的jdbc与struts笔记.pdf

    【JDBC笔记】 JDBC(Java Database Connectivity)是Java编程语言与各种数据库进行交互的一组标准接口和类库。它是Sun Microsystems为Java开发者定义的一套规范,允许Java应用程序通过Java API来连接和操作数据库。...

    达内,tarena,jdbc笔记,jdbcPPT课件,达内jdbc笔记

    【JDBC基础概念】 JDBC(Java Database Connectivity)是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。由Sun Microsystems公司开发并随Java SDK发布,...

    JDBC笔记_JDBC学习笔记_

    在本篇JDBC学习笔记中,我们将深入探讨JDBC的基础知识、核心概念以及实际应用。 一、JDBC基础 1. JDBC驱动程序:JDBC驱动是连接Java应用程序和数据库之间的桥梁。根据实现方式,JDBC驱动分为四种类型:类型1(JDBC...

    java JDBC综合笔记

    Java JDBC综合笔记详细介绍了使用Java语言通过JDBC操作数据库的基本方法和技巧,包括数据库的创建、表的操作、数据的增删改查、SQL语句的使用等。 在数据库的创建方面,笔记中提到了如何创建数据库以及如何设置...

    JDBC笔记,初学者的笔记

    Java JDBC(Java Database Connectivity)是Java编程语言与各种数据库之间通信的标准接口,它允许Java应用程序连接到数据库并执行SQL操作。对于初学者来说,理解JDBC的基本概念和使用方法是至关重要的。 首先,JDBC...

Global site tag (gtag.js) - Google Analytics