JDBC CRUD

作者: Frog_ | 来源:发表于2017-10-10 20:25 被阅读0次

JDBC主要功能如下:

  • 建立与数据库或者其他数据源的连接。
  • 向数据库发送SQL命令
  • 处理数据库的返回结果。

JDBC中常用的类和接口

  • Connection: 连接到数据库。
  • Statement: 建立操作指令。
  • executeQuery: 执行查询指令。
  • ResultSet: 获得查询结果。

建立连接的操作:

public static Connection getConnection() {

    Connection con = null;
    
    try {
        Class.forName(driverName); //建立JDBC-ODBC桥接器
        con = DriverManager.getConnection(dbURL,userName,userPw); //建立连接。
    }catch(Exception e) {
        e.printStackTrace();
    }
    
    //返回建立的连接对象
    return con;
}

查询操作

  1. 向数据库发送SQL查询语句
    首先使用Satement声明一个SQL语句对象,然后让已创建的连接对象con调用方法createStatement()创建这个SQL语句对象:
Statement sql = con.createStatement();
  1. 处理查询结果
    有了SQL语句对象后,就可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个Result类声明的对象中。也就是说SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是由统一形式的列组织的数据行组成。
ResultSet rs = sql.executeQuery(SQL查询语句);

ResultSet 对象一次只能看到一个数据行,实用next()方法移到下一行数据行,获得一行数据后,ResultSet对象可以实用getXxx方法获得字段值(列值),将位置索引或列名传递给getXxx方法即可。
无论字段是何种属性,总可以使用getString(int columnIndex)或getString(String columnName)方法返回字段值的串表示。
当使用ResultSet的getXxx方法查看一行记录时,不可以颠倒字段的顺序。

查询stu表中学生信息

        Connection con = DBUtil.getConnection();
        
        try {
            Statement sql = con.createStatement();
            ResultSet rs = sql.executeQuery("SELECT * FROM stu");
            
            while(rs.next()) {
                System.out.println(rs.getString("id") + "  " + rs.getString("name") + "    "+  rs.getString("phone"));
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

顺序查询

查询表中字段信息:

当创建好连接对象con之后,那么该连接对象调用getMetaData()方法可以返回一个DatabaseMetaData对象:
DatabaseMetaData metadata = con.getMetaData();
 Metadata对象再调用getColumns可以将表的字段信息以行列的形式存储在一个ResultSet对象:
ResultSet tableMessage = metadata.getColumns(null,null,"goods",null);  

如果表中由n个字段,tableMessage就刚好有n行,每行4列,每行分别含有和相应字段有关的信息。信息的次序为:“数据库名”、“数据库扩展名”、“表名“、“字段名”。
tableMessage对象调用next方法使游标向下移动一行(游标的初始位置在第一行之前),然后tableMessage调用getXXX方法可以查看该行中列的信息,其中最重要的信息是第4列,该列上的信息为字段的名字。

获取表中字段信息

    Connection con = DBUtil.getConnection();
        
        try {
            DatabaseMetaData metadata = con.getMetaData();
            ResultSet tableMessage = metadata.getColumns(null, null, "stu", null);
            while(tableMessage.next()) {
                System.out.println(tableMessage.getString(1) + tableMessage.getString(2) + tableMessage.getString(3) + tableMessage.getString(4 ));
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
        
        System.out.println("成功");

控制游标

有时候需要在结果集中前后移动、显示结果集中的某条记录或随机显示若干条记录时,必须要返回一个可滚动的结果集,为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。

Statement stmt = con.createStatement(int type, int concurrency);

然后根据参数type、concurrency的取值情况,stmt返回相应类型的结果集。

Result re = stmt.executeQuery(SQL语句);

type的取值决定滚动方式,取值可以是:

取值 含义
ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变
取值 含义
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表

Concurrency取值决定是否可以用结果集更新数据库,Concurrenct取值:

取值 含义
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表
方法名 含义
public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移动结果集第一行之前时返回false。
public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。
public void afterLast() 将游标移动到结果集最后一行之后。
public void first() 将游标移动到结果集的第一行
public void last() 将游标移动到结果集的最后一行
public boolean isAfterLast() 判断游标是否在最后一行之后。
public boolean isBeforeFirst() 判断游标是否在第一行之前。
public boolean isFirst() 判断游标是否指向结果集的第一行。
public boolean isLast() 判断游标是否指向结果集的最后一行
public int getRow() 得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0
public boolean absolute(int row) 将游标移到参数row指定的行

滚动查询经常用到ResultSet的下述方法。

方法名 含义
public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移动结果集第一行之前时返回false。
public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。
public void afterLast() 将游标移动到结果集最后一行之后。
public void first() 将游标移动到结果集的第一行
public void last() 将游标移动到结果集的最后一行
public boolean isAfterLast() 判断游标是否在最后一行之后。
public boolean isBeforeFirst() 判断游标是否在第一行之前。
public boolean isFirst() 判断游标是否指向结果集的第一行。
public boolean isLast() 判断游标是否指向结果集的最后一行
public int getRow() 得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0
public boolean absolute(int row) 将游标移到参数row指定的行

条件查询

更新、添加与删除操作

Statement对象调用方法:

  public int executeUpdate(String sqlStatement);

通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。更新、添加和删除记录的SQL语法分别是:

  UPDATE <表名> SET <字段名> = 新增 WHERE <条件子句>
  INSERT INTO 表(字段列表) VALUES(对应的具体的记录)或INSETE INTO表(VALUES (对应的具体的记录)
  DELETE FROM <表名> WHER <条件子句>

public class ModifyTable {

String datasourceName = "";

String SQL,message="";

public ModifyTable() {
    
}

public void setSQL(String SQL) {
    this.SQL = SQL;
}

public String modifyRecord() {
    Connection con = DBUtil.getConnection();
    Statement sql = null;
    try {
        sql = con.createStatement();
        sql.execute(SQL);
        message = "操作成功";
        con.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return message;
}
public class Main {
    public static void main(String[] args) {
        ModifyTable modify = new ModifyTable();
        modify.setSQL("INSERT INTO stu(name,phone) VALUES ('KKK','17852179777')");
        String backMess = modify.modifyRecord();
        System.out.println(backMess);
    }
}

相关文章

  • JDBC CRUD

    JDBC主要功能如下: 建立与数据库或者其他数据源的连接。 向数据库发送SQL命令 处理数据库的返回结果。 JDB...

  • JDBC

    一、JDBC简介 四、抽取JDBC的工具类五、JDBC进行表单的CRUD六、改写用户注册和登录案例1、自定义Dao...

  • java的UUID类型字段,如何通过jdbc进行数据库的CRUD

    java的UUID类型字段,如何通过jdbc进行数据库的CRUD 关键字:UUID byte[] jdbc mys...

  • JdbcTemplate超简单备忘

    spring简化了对jdbc操作的难度,能够更简单的使用JDBC,避免样板式代码。 CRUD pom 我的DAO层...

  • JDBC(二)完成CRUD

    1.获取数据库连接 (1)使用JDBC的准备环境: 1):拷贝MySQL的JDBC驱动,到Java项目中:mysq...

  • 三、 Spring JDBC(了解)

    Spring框架提供 对jdbc的进行了封装,可以操作 JdbcTemplate模板完成crud操作,JdbcT...

  • Spring04 Spring 整合 jdbc 及其 crud

    Spring 整合 jdbc 及其 crud 操作** 一.代理模式 设计原则: 代理类 与 委托类 具有相似的行...

  • Spring_10 JdbcTemplate 增, 删,改

    在spring中对jdbc进行了封装,在spring中我们使用JdbcTemplate 对数据库进行crud操作。...

  • JDBC2 示例 -- CRUD

    可以将获取连接的部分封装起来,通过读取配置文件来获得Connection对象。本例子的配置文件为src/jdbc....

  • Java自学-JDBC 增、删、改

    JDBC 增、删、改 CRUD是最常见的数据库操作,即增删改查C 增加(Create)R 读取查询(Retriev...

网友评论

      本文标题:JDBC CRUD

      本文链接:https://www.haomeiwen.com/subject/mupbyxtx.html