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

  • 相关阅读:
    微信小程序--数据存储
    微信小程序---setData
    关于MVC中 服务器无法在发送 HTTP 标头之后修改 cookie此类问题的解决
    获取Web项目中的控制器类以及类中Action方法
    使用Attribute限制Action只接受Ajax请求
    Dapper 返回Sql server 自增长ID 标识列SCOPE_IDENTITY
    根据数据库反向生成PD
    Git常用命令大全,迅速提升你的Git水平
    官方VisualStudio.gitignore配置
    Win10-1909删除自带的微软输入法,添加美式键盘
  • 原文地址:https://www.cnblogs.com/miaowulj/p/11309207.html
Copyright © 2011-2022 走看看