JDBC的操作步骤

一、什么是JDBC

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。 其实,JDBC就是一套规范(接口),让各大服务器厂商自己去实现这个规范(实现接口),从而可以使得java编写的程序可以去访问。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

二、常用的API

  • Statement接口:

    执行静态SQL语句并返回它所生成结果.

    int executeUpdate(String sql): 执行DDL/DML语句. 若当前SQL是DDL语句,则返回0. 若当前SQL是DML语句,则返回受影响的行数.

    ResultSet executeQuery(String sql):执行DQL语句,返回结果集.

    close():释放资源

  • Connection接口

    Statement createStatement():创建一个静态的语句对象.

    PreparedStatement prepareStatement(String sql):创建一个预编译语句对象. 此时参数sql:表示带有占位符(?)的SQL语句的模板.

    close():释放资源

  • PreparedStatement接口

    是Statemen接口的子接口,表示预编译的 SQL 语句的对象.

    void setXxx(int parameterIndex,Xxx value):设置第几个占位符的真正参数值.

    int executeUpdate():执行DDL/DML语句. 注意:没有参数 若当前SQL是DDL语句,则返回0. 若当前SQL是DML语句,则返回受影响的行数.

    ResultSet executeQuery():执行DQL语句,返回结果集.

    close():释放资源

  • ResultSet接口

    执行SQL语句会返回一个结果集,开始光标位于第一行的前,调用next方法会返回一个boolean类型,判断下一行是否还有结果集并且光标会想下一行移动。

    boolean next():判断当前光标是否能向下移动,如果能向下移动返回true,并同时将光标移动到下一行.

    Xxx getXxx(int columnIndex):取出当前光标所在行的第columnIndex列的数据(columnIndex从1开始算).

    Xxx getXxx(String columnName):取出当前光标所在行的列名为columnName列的数据,columnName可以是别名.

    close():释放资源

    Xxx表示的是数据类型

三、怎么用JDBC

有五个铁定的步骤,一个一个来说:

1.加载注册驱动

先加载驱动包,驱动包就是服务器厂商实现了JDBC接口的一个jar包,比如mysql的驱动包。先build path ,mysql的jar包。用java加载注册驱动代码:

Class.forName("驱动类名称");

一些数据库的驱动类名称:

mysql: com.mysql.jdbc.Driver

oracle: oracle.jdbc.driver.OracleDriver

DB2: com.ibm.db2.jcc.DB2Driver

加载过程就是 把驱动类这一份字节码加载进JVM,会立刻执行类中的静态代码块,而在这些类中的静态代码块就是在注册驱动。

Java6开始,JDBC4.0有一个新特性,无需加载注册驱动。不提倡,因为JavaWeb也是要手动加载

2.获取连接对象

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

url是也是各个数据库不相同:

mysql的是 jdbc:mysql://主机名:3306/数据库

username和password是数据库的账号和密码

3.获取语句对象

Statement st = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);

4.执行SQL语句

在数据库管理系统上执行完sql语句返回结果,DML语句会返回影响的行数,DDL语句不返回,DQL会返回一个结果集

st.executeUpdate(sql);//DML,DDL
ResultSet rs = execumentQuery();//DQL

对于DQL语句要进行处理结果集

while(rs.next){//TODO}

5.释放资源

正确关闭资源:

public static void close(Connection conn, Statement st, ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(st != null){
st.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(conn != null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{ }
}
}
}

四、JDBC的DML,DDL,DQL操作

  • 创建表

    public void testCreateTab() throws Exception {
    String sql = "CREATE TABLE s_student(id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10) NOT NULL UNIQUE,age INT)";
    //1.记载注册驱动/
    Class.forName("com.mysql.jdbc.Driver");
    //2.获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo",
    "root", "admin");
    //3.创建语句对象
    Statement st = conn.createStatement();
    //4.执行SQL语句
    st.executeUpdate(sql);
    //5.释放资源
    st.close();
    conn.close();
    }
  • 增删改

    public class DMLTest {
    @Test //向表中添加行数据
    public void testInsert() throws Exception {
    String sql = "INSERT INTO s_student(name,age) VALUES('西门吹雪',18),('王熙凤',19)";
    //1.加载注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2.获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
    //3.获取语句对象
    Statement st = conn.createStatement();
    //4.执行sql语句
    int ret = st.executeUpdate(sql);
    System.out.println("受影响的行数"+ret);
    //5.关闭资源
    st.close();
    conn.close();
    }
    @Test
    public void testDelete() throws Exception {
    String sql = "DELETE FROM s_student WHERE name = '西门吹雪'";
    //1.记载注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
    //3获取语句对象
    Statement st = conn.createStatement();
    //4.执行sql语句
    st.executeUpdate(sql);
    //5.释放资源
    st.close();
    conn.close();
    }
    @Test
    public void testUpdate() throws Exception {
    String sql = "UPDATE s_student SET age = 99 WHERE id = 3";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
    Statement st = conn.createStatement();
    st.executeUpdate(sql);
    st.close();
    conn.close();
    }
    }
  • 查询

    public class DQLTest {
    @Test
    public void testQuerySigle() throws Exception {
    String sql = "SELECT * FROM s_student WHERE id = 1";
    //加载驱动
    Class.forName("com.mysql.jdbc.Driver");
    //获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
    //获取语句对象
    Statement st = conn.createStatement();
    //执行sql语句
    ResultSet rs = st.executeQuery(sql);
    if(rs.next()){
    long id = rs.getLong("id");
    long age = rs.getLong("age");
    String name = rs.getString("name");
    System.out.println(id + "," + age +"," + name);
    }
    rs.close();
    st.close();
    conn.close();
    } @Test
    public void testAll() throws Exception {
    String sql = "SELECT * FROM s_student";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","admin");
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    while(rs.next()){
    String name = rs.getString("name");
    long id = rs.getLong("id");
    long age = rs.getLong("age");
    System.out.println(name + "," + id +"," + age);
    }
    rs.close();
    st.close();
    conn.close();
    }
    }

五、总结

JDBC的CUID操作就是严格按照上述步骤完成的,可以发现基本操作都很相同,也很容易理解。

JDBC的操作步骤的更多相关文章

  1. JDBC的操作步骤和实例()

    加载JDBC驱动程序 提供JDBC连接的URL 创建数据库的连接 创建一个Statement 执行SQL语句 处理结果 关闭JDBC对象 实例JdbcUtils 创建一个JDBC程序包含7个步骤: 1 ...

  2. JDBC:数据库操作:事务

    事务特征:原子性,一致性,独立性,持久性. 要想操作事务,必须按照以下步骤完成. 1,取消掉自动提交(SET AUTOCOMMIT=0):每次执行数据库更新的时候实际上发出SQL命令之后就已经提交上去 ...

  3. java中JDBC连接数据库操作的基本步骤

    JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...

  4. 学习笔记-JDBC连接数据库操作的步骤

    前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...

  5. JDBC连接数据库操作

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  6. JDBC的基本步骤

    JDBC全名是Java Data Base Connectivity就是Java数据库连接,这是Java用于向数据库执行SQL语句的API,JDBC可以为多种关系型数据库提供统一的访问,而不用考虑细节 ...

  7. JAVA采用JDBC连接操作数据库详解

    JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...

  8. jdbc 链接数据库步骤 7步

    JDBC连接数据库   •创建一个以JDBC连接数据库的程序,包含7个步骤:   1.加载JDBC驱动程序:       在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), ...

  9. 使用JDBC连接操作数据库

    JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...

随机推荐

  1. Android ContentResolver

    在Android 应用程序之间数据共享—-ContentResolver中,已经说明了Android是如何实现应用程序之间数据共享的,并详细解析了如何获取其他应用 程序共享的数据.ContentPro ...

  2. 26QTimer定时器的使用

    前面介绍过定时器事件(QTimerEvent),有个弊端,就是每启动一个定时器都要对应的ID.本次介绍在设计器中使用Qtimer. 首先在设计器中添加一个LCD Number,和两个按钮. 头文件 # ...

  3. 独家揭秘,106岁的IBM靠什么完成了世纪大转型|钛度专访

    IBM大中华区董事长陈黎明 到2017年2月,陈黎明就担任IBM大中华区董事长整整两年了. 五年前,IBM历史上首位女CEO也是第9位CEO罗睿兰上任,三年前,IBM在罗睿兰的带领下以数据与分析.云. ...

  4. java第七天

    p38~p41: 1.可以通过import 一个自定义类库(或者网上下的)在java中使用c风格的输入输出方式. 2.忘记优先顺序时应该用括号明确规定计算顺序. 3.java的操作符不同于c++,几乎 ...

  5. 【Android】使用BaseAdapter实现复杂的ListView【转】

    本文转载自:http://blog.csdn.net/jueblog/article/details/11857281 步骤 使用BaseAdapter实现复杂的ListView的步骤: 1. 数据你 ...

  6. Jwt访问api提示401错误 Authorization has been denied for this request

    教程  http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-ap ...

  7. Using SQLXML Bulk Load in the .NET Environment

    http://msdn.microsoft.com/en-us/library/ms171878.aspx 1.首先创建一张表 CREATE TABLE Ord ( OrderID ,) PRIMAR ...

  8. 【eclipse】Server Tomcat v9.0 Server at localhost failed to start.

    Server Tomcat v9.0 Server at localhost failed to start. 的一个原因就是启动超时了.

  9. Validate Binary Search Tree,判断是否是二叉排序树

    算法分析:两种方法,一种是中序遍历,然后得到一个序列,看序列是否是有序的.第二种,是用递归. 中序遍历: public class Solution { List<Integer> lis ...

  10. redis优缺点

    redis主要是一个内存数据库.很多时候是被作为缓存来使用.redis的优势主要体现在和其他缓存方案进行比较,redis的不足主要是和其他数据库进行比较时体现的. 优点: 读写性能优异 支持数据持久化 ...