首页 > 技术文章 > java-数据库操作(JDBC)

chuimber 2022-02-12 19:16 原文

前言:JDBC用到的API和常用方法

  • DriverMannager类

    加载驱动并创建与数据库的连接,通常使用Class类的静态方法forName()来实现加载驱动,使用getConnection(String url,String user,String pwd)方法实现连接,返回如下Connection对象

  • Connection接口

    使用createStatement()返回一个用于向数据库发送语句的Statement对象,prepareStatement(String sql)返回一个用于向数据库发送参数化的SQL语句的PreparedStatement对象

  • Statement接口

    用于执行静态SQL语句,并返回一个结果对象

    boolean execute(String sql)//用于执行各种SQL语句,返回布尔值,true代表有查询结果,可用getResultSet()获得查询结果
    int executeUpdate(String sql)//用于执行insert、update、delete语句,返回数据库中受影响的记录条数
    ResultSet executeQuery(String sql)//执行select语句,返回ResultSet对象
    

  • PreparedStatement接口

    是Statement的子接口,扩展了带有参数SQL语句的执行操作,使用占位符"?"代替参数,使用setXXX()方法赋值

    int executeUpdate()//执行SQL语句,限制语句为无返回内容的sql或DML语句
    ResultSet executeQuery()//执行SQL查询 返回ResultSet对象
    void setInt(int index,int x)//将指定的对应表头的参数设置为x
    void setFloat(int index,float x)
    void setString(int index,String x)
    void setDate(int index, Date x)//注意:Date类型必须为java.sql.Date,非java.util.Date
    

  • ResultSet接口

    用于保存查询后的结果集,封装在一个逻辑表格中,接口内部有指向表格数据行的游标(指针),调用next()方法作为循环条件迭代结果集

    String getString(int columnindex)//根据索引获取指定字段的String的值
    String getString(String columnname)//根据字段名称获取指定字段的String的值
    int getInt(int columnindex)//根据索引获取指定字段的int的值
    int getInt(String columnname)//根据字段名称获取指定字段的int的值
    Date getDate(int columnindex)//根据索引获取字段的Date值
    Date getDate(String columnname)//根据字段名称获取字段的Date值
    boolean next()//游标下移一行
    boolean absolute(int row)//游标移动到指定行
    

步骤概述:


1.加载数据库驱动

​ 数据库驱动zip包下载:https://dev.mysql.com/downloads/connector/j/

选择Platform Independent,完成后在项目结构中导入文件夹里的Jar包


加载驱动
Class.forName("com.mysql.jdbc.Driver");//Mysql驱动
//IDEA亲测提示上面语句已经弃用,可改为com.mysql.cj.jdbc.Driver""
Class.forName("oracle.jdbc.driver.OracleDriver");//Oracle驱动

2.通过DriverManager获取数据库连接

Connect conn=DriverManager.getConnection(String url,String user,String pwd);

​ url格式:jdbc:mysql://localhost:3306/database-name


3.通过Connection对象获取Statement对象

Statement stmt=conn.creatStatement();stmt=conn.prepareStatement(String sql);


4.使用Statement执行SQL语句

ResultSet rs=stmt.executeQuery(sql);


5.操作得到的结果集

​ rs.getXXX();

6.关闭连接,释放资源

​ 在try...catch..后的finally{}中统一关闭资源

实例

public class sql {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1.加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://114.xx.xxx.62:3306/company";
            String user = "root";
            String pwd = "xxxxxx";
            //2.通过DriverManager获取数据库连接
            conn = DriverManager.getConnection(url, user, pwd);
            //3.通过Connection获取statement对象
            stmt = conn.createStatement();
            //4.执行SQL语句
            rs = stmt.executeQuery("select * from demo1");
            //5.操作结果集
            while (rs.next()) {
                    String name = rs.getString("企业名称");
                    String lat = rs.getString("经纬度");
                    String flag1 = rs.getString("flag1");
                    System.out.println(name+"   |   "+lat+"    |    "+flag1);
                }
            } 

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            //6.关闭连接,释放资源
        	if(rs!=null){rs.close();}
        	if(stmt!=null){stmt.close();}
        	if(conn!=null){conn.close();}
            }
        }
    }
}

​ 运行结果

推荐阅读