Java Web的数据库操作

一、JDBC技术

1、JDBC简介

JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与数据库系统之间假期了一座桥梁。

JDBC由一组用Java语言编写的类和接口组成,它对数据库的操作提供了基本方法,但由于数据库种类跟多且多有不同,所以对数据库的细节操作由数据库厂商进行实现,且厂商需要提供数据库的驱动程序,下图为Java程序与数据库相交互的示意图:

2、JDBC连接数据库的过程

l  下载驱动包

在JDK中,不包含数据库的驱动程序,使用JDBC操作数据库需要实现下载数据库厂商提供的驱动包,并导入到开发环境中。

l  注册数据库驱动

连接数据库前,需要将数据库厂商提供的数据库驱动注册到JDBC的驱动管理器中,一般是通过将数据库驱动类加载到JVM来实现的,例如连接MYSQL数据库:

Class.forName(“com.mysql.jdbc.Driver”);

l  构建数据库连接URL

URL由数据库厂商制定,不同数据库它的URL有所区别,但都符合一个基本的格式,即“JDBC协议+IP地址或域名+端口+数据库名称”,例如MYSQL数据库为”jdbc:mysql://localhost:8080/test”。

前两步中不同数据库有所差别,不同数据库连接请参考这篇文章:

http://blog.csdn.net/zhai56565/article/details/8959184

l  获取Connection对象

通过驱动管理器获得数据库的连接Connection,只有创建此对象后才可以对数据库进行操作,方法如下:

DriverManager.getConnection(url , username , password);

下面是一个完整的连接数据库的例子:

  1. try {
  2.  
  3. //加载数据库驱动,注册到去送管理器
  4.  
  5. Class.forName("com.mysql.jdbc.Driver");
  6.  
  7. String url = "jdbc:mysql://localhost:8080/test";
  8.  
  9. String username = "admin";
  10.  
  11. String password = "123456";
  12.  
  13. Connection conn = DriverManager.getConnection(url , username , password);
  14.  
  15. if (conn != null)
  16.  
  17. System.out.println("数据库连接成功!");
  18.  
  19. else
  20.  
  21. System.out.println("数据库连接失败!");
  22.  
  23. //完成后记得关闭数据库连接
  24.  
  25. conn.close();
  26.  
  27. } catch (ClassNotFoundException e) {
  28.  
  29. e.printStackTrace();
  30.  
  31. } catch (SQLException e) {
  32.  
  33. e.printStackTrace();
  34.  
  35. }

二、JDBC API

JDBC是Java程序操作数据库的标准,它由一组用Java语言编写的类和接口组成,Java通过JDBC可以对多种关系数据库进行统一访问。下面介绍主要类和接口的作用,详细方法请参考J2SE的API。

1、 Connection接口

与特定数据库的连接会话,只有获得特定数据库的连接对象才能访问数据库,操作数据库中的数据表、视图和存储过程等。

方法声明

说明

Close()

立即释放Connection对象的数据库连接占用的JDBC资源

Commit()

提交事务,并释放Connection对象当前持有的所有数据库锁

createStatement()

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

PreparedStatement

将参数化的SQL语句预编译并存储在PreparedStatement对象中

2、DriverManager类

主要作用与用户及驱动程序之间,它是JDBC中的管理层,通过它可以管理数据库厂商提供的驱动程序,并建立应用程序与数据库之间的连接。

方法声明

说明

getConnection(String url)

根据指定数据库连接URL,建立Connection

getConnection(String url , Properties info)

根据指定数据库连接URL及数据库连接属性信息建立数据库连接Connection,参数info为数据库连接属性

getConnection(url,un,pwd)

根据指定数据库连接URL,用户名和密码连接数据库

getDrivers()

获取当前DriverManager中已加载的所有驱动程序

3、 Statement接口

Statement接口封装了执行SQL语句和获取查询接口的基本方法。

方法声明

说明

AddBatch(String sql)

将SQL语句添加到Statement对象的当前命令列表中,用于SQL命令的批处理

clearBatch()

清空Statement对喜爱那个的命令列表

Close()

立即释放Statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时执行

Execute(String sql)

执行指定的SQL语句,若SQL返回结果,该方法返回true,否则返回false

executeBatch()

将一批SQL命令提交给数据库执行,返回更新计数组成的数据

executeQuery(String sql)

执行查询类型的sql语句,该方法返回查询所获取的结果集ResultSet

executeUpdate(String sql)

执行SQL语句中DML类型(insert、update、delete)的SQL语句,返回更新所影响的行数

getConnection()

获取生成Statement对喜爱那个的Connection对象

4、PreparedStatement接口

Statement接口封装了JDBC执行SQL语句的方法,但在实际开发过程中,SQL语句往往需要将程序中的变量做查询条件参数等。使用Statement接口进行操作过于繁琐且存在安全缺陷。而PreparedStatement接口继承与Statement接口,且对带有参数SQL语句的执行操作进行了扩展。应用于PreparedStatement接口中的SQL语句可以使用占位符”?”来代替SQL语句中的参数,然后再对其进行赋值。

方法声明

说明

setBinaryStream(int x , InputStream s)

将输入流s作为SQL语句中的参数值,x为参数位置索引

setBoolean(int x , Boolean b)

将布尔值b作为SQL语句中的参数值,x为参数位置索引

SetByte

……

setInt

……

等等。。。。。。

……

5、ResultSet接口

ResultSet对象封装了数据查询的结果集,它包含了符合SQL语句的所有行,针对Java中的数据类型提供了一套getXXX()的方法,通过这些方法可以获取每一行中的数据。ResultSet还提供了光标的功能,通过光标可以自由定位到某一行中的数据。

方法声明

说明

Absolute(int row)

光标移动到ReulstSet对象的给定行编号

afterLast()

光标移动到最后一行后,如果结果集中不包含任何行,则该方法无效

beforFirst()

立即释放ResultSet对喜爱那个的数据库和JDBC资源

deleteRow()

删除当前行

First()

光标移动到第一行

getString(String columnLable)

以String的方式获取ResultSet对象当前行中指定列的值,参数为列名称

getBinaryStream(String colunmLable)

你懂得

getInt(String columnLable)

你懂得

isClosed()

判断ResultSet对喜爱那个是否已关闭

Last()

移动到最后一行

Next()

移动到下一行,若新行无效则返回false

Previous()

移动到上一行,若新行无效则返回false

Java Web----Java Web的数据库操作(一)的更多相关文章

  1. Java通过JDBC 进行MySQL数据库操作

    转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...

  2. Java常用工具类之数据库操作辅助类DBUtil.java

    package com.qushida.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.be ...

  3. java之Hibernate框架实现数据库操作

    之前我们用一个java类连接MySQL数据库实现了数据库的增删改查操作---------MySQL篇: 但是数据库种类之多,除了MySQL,还有Access.Oracle.DB2等等,而且每种数据库语 ...

  4. Java/C++实现模板方法模式---数据库操作

    对数据库的操作一般包括连接.打开.使用.关闭等步骤,在数据库操作模板类中我们定义了connDB().openDB().useDB().closeDB()四个方法分别对应这四个步骤.对于不同类型的数据库 ...

  5. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  6. PHP-Phalcon框架中的数据库操作

    > 本文描述了PHP-Phalcon框架中数据库操作方法,主要讨论Phalcon框架的Model组件中的操作方法.更详细的Model介绍请参考:官方文档 1. 连接数据库 在Phalcon框架中 ...

  7. tornado 数据库操作

    tornado是python的web框架,web程序开发中数据库操作是必须的. 安装: tornado的官方文档中提供的说明比较少,而且提供的模块中未找到数据库方面的模块,难道没有针对数据库操作进行封 ...

  8. Java Web的数据库操作(一)

    一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与 ...

  9. Java Web----Java Web的数据库操作(二)

    Java Web的数据库操作 三.JDBC操作数据库 上一篇介绍了JDBC API,之后就可以通过API来操作数据库,实现对数据库的CRUD操作了. http://blog.csdn.net/zhai ...

随机推荐

  1. Cocos2D-X v3.0 alpha1环境搭建

    周末看了下Cocos2D,感觉用起来还是挺爽的样子,跨平台,支持Windows, Linux, Mac, IOS, Android,WP...N多平台..还是C++开源滴,果断下下来研究下.. 最新版 ...

  2. 探究css !important的应用之道

    定义及语法: !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权. 语法格式:{ cssRule !important },即将!important写在定义的最后面, 例如 ...

  3. C#运行时鼠标移动控件 - 调用Windows API(ReleaseCapture)

    [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool SendMes ...

  4. freemarker常用的基本命令

    freemarker包括下面几个基本命令 if,else,elseif指令switch,case,default,break指令list,break指令include指令import 指令nopars ...

  5. (二)《Java编程思想》——t h i s 关键字

    this 关键字(注意只能在方法内部使用)可为已调用了其方法的那个对象生成相应的句柄.可象对待其他任何对象句柄一样对待这个句柄. package chapter4; //: Leaf.java // ...

  6. SQL Profiler工具简介

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...

  7. C# 无边框窗体移动代码

    C# 无边框窗体移动代码 Point _frmPoint = new Point(); //移动前窗体左上角坐标 Point _mousePoint = new Point(); //按下鼠标时坐标 ...

  8. Senparc.Weixin.MP SDK 微信公众平台开发教程 索引

    Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...

  9. 当setTimeout遇到闭包

    1: function myTest(){ for(var i=0; i< 5; i++){ setTimeout(console.log(i), 0); } } myTest(); 或者比较正 ...

  10. easyui 点击combox 文本框 显示下拉 panel

    $(".combo-text").click(function () { var mid = $(this).parent().parent().find("select ...