zoukankan      html  css  js  c++  java
  • java如何连接数据库并对其操作(以PostgreSQL为例)

    java如何连接数据库并对其操作(以PostgreSQL为例)

    一.相关概念

    JDBC(Java Data Base Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它是一组用java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
    数据库驱动:我们安装好数据之后,我们的应用程序不能直接使用数据库,必须通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据厂商的JDBC接口实现,即对connection等接口的实现类的jar文件

    二.常用接口

    ☛Driver接口

    Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定的数据库驱动程序,以PostgreSQL驱动装载为例:

    Class.forName("org.postgresql.Driver");

    ☛Connection接口

    Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果,DriverManager.getConnection(url,user,password)方法建立在JDBC URL中定义的数据库Connection连接上,以连接PostgreSQL为例:

    Connection connection=DriverManager.getConnection("jdbc:postgresql://172.16.55.190:5432/thingsboard",user,password);(设置自己的ip地址,端口号,thingsboard为数据库名称)

    ☛Statement接口

    用于执行静态sql语句并返回它所生结果的对象
    ★三种Statement类:
    ☺Statement:由CreateStatement创建,用于发送简单的SQL语句
    ☺PreparedStatement:可以防止sql注入
    ☺CallableStatement:

    ★常用Statement方法:
    ☹execute(String sql):运行语句,返回是否有结果集
    ☹executeQuery(String sql):运行select语句,返回ResultSet结果集
    ☹executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数

    ☛ResultSet接口

    ResultSet提供检索不同类型字段的方法,常用有:getString(int index/String columnName),getFloat(int index/String columnName),getBoolean(int index/String columnName),getObject(int index/String columnName)--获取数据库中任意类型的数据
    ResultSet还提供了对结果进行滚动的方法:
    ☞next();移动到下一行
    ☞Previous();移动到前一行
    ☞absolute(int row);移动到指定行
    ☞beforeFirst();移动到最前面
    ☞afterLast();移动到最后面

    ♥使用后依次关闭对象及连接:ResultSet->Statement->Connection

    实现步骤:

    ♢下载驱动(jar包)
    驱动的下载地址:jar包
    ♢eclipse导入jar包
    右键点击创建的项目新建文件夹,文件夹命名为“lib",将下载的jar包复制到lib文件夹中,右键点击导入的jar包,找到构建路径,点击添加构建路径

    实现代码:

    package Test;
    
    import java.sql.Connection;
    
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class SelectTest {
    
        public static void main(String[] args) {
            Connection connection = null;
            Statement statement = null;
            try {
                String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";//换成自己PostgreSQL数据库实例所在的ip地址,并设置自己的端口
                String user = "postgres";
                String password = "123456";  //在这里我的密码为空,读者可以自己选择是否设置密码
                Class.forName("org.postgresql.Driver"); 
                connection= DriverManager.getConnection(url, user, password);
               //System.out.println("是否成功连接pg数据库"+connection);
                String sql ="select * from public.syuser";
                statement = connection.createStatement();
                ResultSet resultSet = statement.executeQuery(sql);
               while(resultSet.next()){
                      //取出列值
                    String id = resultSet.getString(2);
                    String name = resultSet.getString(8);
                    System.out.println(id+"		"+name);
                }
         
                resultSet.close();
                statement.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            }
    }
    

    语句解析:

    String url = "jdbc:postgresql://172.16.55.190:5432/thingsboard";
    jdbc:协议 postgresql:子协议 172.16.55.190:主机 5432:端口 thingsboard:数据库

    创建执行语句的statement

    String sql="insert into user(name,pwd) values(?,?)";
    PrearedStatement ps = conn.preparedStatement(sql);
    ps.setString(1,"col_value");//占位符从第一位开始
    ps.setString(2,"123435")
    ps.executeQuery();
    

    处理执行结果的ResultSet

    ResultSet rs=ps.executeQuery();
    While(rs.next()){
        rs.getString("col_name");
        rs.getInt(1);
    }
    

    释放资源

                resultSet.close();
                statement.close();
                connection.close();
    

    常用Sql语句查询

    本博客部分内容参考自https://www.cnblogs.com/erbing/p/5805727.html

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/miaowulj/p/11309207.html
Copyright © 2011-2022 走看看