JAVA技术分享:jdbc浅析

# jdbc浅析

# 一、jdbc概念

所谓的jdbc,实际是来自于 java database conectivity的缩写,顾名思义是用于实现在java程序中连接数据库,以至于可以对数据库进行操作。实际上,jdbc是java程序与数据库进行通信的一种规范。这种规范(接口)定义在java.sql包下。其四大核心对象:

- DriverManager: 用于加载数据库驱动

- Connection:用于连接数据库的

- Statement: 用于执行sql语句的

- ResultSet:用于封装从数据库返回的结果集的

# 二、jdbc初体验

```java

//1.注册驱动

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

//2.获得一个连接对象

String url= "jdbc:mysql:///db_day07?user=root&password=123";

Connection connection = DriverManager.getConnection(url);

//3.获得执行sql语句的statement对象

Statement stmt = connection.createStatement();

//4.执行sql语句

String sql = "select * from user";

//5.获得结果集对象ResultSet,其中封装着来自于数据库的所有数据

ResultSet rs = stmt.executeQuery(sql);

//6.解析结果集

while(rs.next()){

System.out.println(rs.getInt(1)+";"+rs.getString(2)+";"+rs.getInt(3)+";"+rs.getString(4));

}

//7.释放资源

rs.close();

stmt.close();

connection.close();

```

## 数据库驱动的作用:

数据库驱动是已经实现了jdbc规范的一个类集。其中封装了实现了jdbc规范的所有的类。

对于mysql的驱动来说,获得的Connection对象,该对象就能连接mysql数据库,同理,oracle驱动获得的连接对象,就能连接oracle数据库。

# 三、四大核心对象的详解

## 1.DriverManager:加载驱动

注册驱动的方式有两种:

1)DriverManager.registerDriver(new com.mysql.jdbc.Driver());

这种方式不合适,因为驱动会随着com.mysql.jdbc.Driver类的加载而被注册,此时相当于注册了两次

2)Class.forName("com.mysql.jdbc.Driver"); 这种方式直接加载com.mysql.jdbc.Driver类,加载类时Driver类的静态代码块就会注册驱动。因此,注册驱动就用这种方式

## 2.Connection:连接数据库的

什么样的数据库的驱动,获得的连接对象就是连接什么样的数据库,比如mysql数据库的驱动,获得的连接对象就是用于连接mysql数据库的。

获得Connection对象的方式:

- 方式一:

```java

String url = "jdbc:mysql://localhost:3306/db_day07";

String user = "root";

String password = "123";

Connection conn = DriverManager.getConnection(url, user, password);

```

- 方式二:将用户名和密码存入到Properties属性集对象(map)中

```java

Properties pro = new Properties();

pro.setProperty("user", "root");

pro.setProperty("password", "123");

Connection conn = DriverManager.getConnection(url, pro);

```

- 方式三:将用户名和密码作为url的参数

```java

String url= "jdbc:mysql:///db_day07?user=root&password=123";

Connection conn = DriverManager.getConnection(url);

```

## 3.Statement对象:用于执行sql语句的对象

获得的方式:

Connection对象的createStatement();

执行sql语句的方法:

- 方法一: executeQuery(String sql):  返回值是一个ResultSet对象,该对象中封装着查询的结果。

对于查询的sql语句来说,使用此方法。因为查询的sql(select)会产生结果集。

- 方法二:executeUpdate(String sql): 返回值是一个int ,表示受影响的行数。

对于,不会产生结果的sql语句(insert、update、delete),使用这个方法,该方法的返回值是受影响的行数。

## 4.ResultSet对象:用于封装结果集的

如果statement对象执行executeQuery方法产生了结果,那么该结果集就被封装进ResultSet对象中。

需要掌握的几个方法:

- next():第一次调用之前,光标指向第一行之前,第一次调用,指在第一行,第二次调用指在第二行。next方法的返回值,如果该行有数据,则返回true,否则返回false.

- getInt(int columnindex):通过列的索引找到该列的数据,注意,索引从1开始

- getInt(String columnname):通过列的名字找到该列的数据。

- getString()、getObject()...

# 四、完善JDBC代码

## 封装JDBCUtil工具类,通过工具类来获得Connection对象

```java

private static String driver = null;

private static String url = null;

private static String user = null;

private static String password = null;

static{

//静态代码块是随着类的加载而被加载,且只加载一次。

Properties p = new Properties();

try {

p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("dbinfo.properties"));

driver = p.getProperty("driver");

url = p.getProperty("url");

user = p.getProperty("user");

password = p.getProperty("password");

Class.forName(driver);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static Connection getConnection() throws SQLException, ClassNotFoundException{

return DriverManager.getConnection(url,user,password);

}

```

# 五、案例:完成登录验证

登录验证的实现

```java

public User findUser(String username, String password) {

User user = null;

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try {

//从工具类中获得一个Connection对象

conn = JDBCUtil.getConnection();

stmt = conn.createStatement();

//select * from user where username=‘zhangsan‘ and password=‘123456‘

String sql = "select * from user where username=‘"+username

+"‘ and password=‘"+password+"‘";

rs = stmt.executeQuery(sql);

if(rs.next()){

//如果用户名和密码正确,那么就能获得一条记录,于是解析该记录并封装进User对象中

user = new User();

user.setUid(rs.getString(1));

user.setUsername(rs.getString(2));

user.setPassword(rs.getString(3));

}

} catch (ClassNotFoundException | SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally{

//释放资源

JDBCUtil.releaseResource(conn, stmt, rs);

}

return user;

}

```

原文地址:https://www.cnblogs.com/qfdsj/p/9003400.html

时间: 2024-11-05 20:25:49

JAVA技术分享:jdbc浅析的相关文章

JAVA技术分享:jQuery浅析

# jQuery浅析 ## 一 jQuery概述 jQuery就是一个js库,里面封装了很多js的方法,相当于是一个外部的js文件. ### 1.快速入门 1) 导库 2)在scrpit中直接使用jquery即可. ```html <script type="text/javascript" src="../js/jquery-1.8.3.js" ></script> <script> $( function(){ $("

网优谷Java技术分享交流

自变量是临时性存储在运行内存中的标识符,能够根据自变量的值来获得全部程序流程不正确的缘故:比如:自变量为空是就是说程序流程沒有运作到该处,自变量的值和预估的不同得话就是说逻辑性难题.javas变量命名规则包名全小写,类名首字必须要看书如今学习培训javas越来越比之前非常容易多了,除开有很多的教程视频外,也有技术专业的java培训学校,这都使学习培训变得越来越傻瓜化,显然我应说的是,javas尽管变得更加非常容易学,显然那只意味着新手入门非常容易,并不是意味着要是只是学了些毛皮,大神写的程序流程

最值得收藏的java技术博客(Java篇)

第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大.在一望无际的Java博文中有那么一两篇JavaScript文章,就算两篇Javascript的质量不是很高,其它教程也是能很好的帮助到在学习中的朋友. 博客关键词:JAVA与模式.简单工厂模式.工厂方法.抽象工厂.单例.建造.原型.适配器.合成.迭代.观察者.模板方法.策略.不变.桥梁.门面.代理

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面

好程序员Java学习路线分享JDBC初体验

好程序员Java学习路线分享JDBC初体验,JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 -?Java 具有坚固.安全.易于使用.易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言.所需要的只是 Java应用程序与各种不同数据库之

【JAVA】基于MVC架构Java技术荟萃案例演练

基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servlet运行原理.Get/Post请求的区别.jsp的基本原理和运行框架.jsp的9大隐含对象的使用.MVC开发模式的使用.构建封装自己dao代码库.以及基于MVC的增删改查操作等:小结最后还有面向接口编程的多数据源配置与存储,以及工厂模式的使用.除此之外,后续文章会对cookie.session.Jav

java中使用jdbc链接数据库

jdbc:java是通过jdbc技术实现对各种数据库的访问的,换句话说,jdbc是java应用程序与各种数据库之间进行对话的媒介 工具/原料 jdbc架包 方法/步骤 1.引用各种语言包:import java.sql.*;//这里面包含了Connection/DriverManager/Statement/ResultSet等各种包 2.加载jdbc驱动:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//里

Java技术综述

自己打算好好学习下Java,所以想先明晰Java开发中到底有哪些技术,以便以后学习的过程中,可以循序渐进,随着学习的深入,本文将不断更新. Java基础教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界.万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了.然后再去学习更高级的主题,或者更深入地学习其中的某些知识点. 首先学习Java的一些基础知识,包括: Java开发环境安装与配置 Eclipse的安装与使用 面向对象基础 基本数据

第01章 Java 技术概览

/**@前言: Java是Sun公司推出的程序设计语言,拥有面向对象.跨平台.分布式.高性能.可移植等优点和特性,是目前应用最广的编程语言之一.Java语言实现面向对象思想的三大特性:继承.多态.封装.Java语言可以制作网站后台.大型网络游戏.多媒体开发,而且还能够操作各种操作系统(linux.Android等) @第一章 Java 技术概览 Java由两部分组成:Java API + Java VM -- Java编程接口 + Java虚拟机.Java特性:跨平台.面向对象.分布式.多线程.