Java JDBC 连接数据库

package com.FSXML.util;

import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class JDBCUtil {

    public static String driverClassName;
    public static String jdbcurl;
    public static String username;
    public static String password;
    @Value(value ="${spring.datasource.ningxiadatacenterdb.driver-class-name}")
    public void setDriverClassName(String driver){
        driverClassName = driver;
    }
    @Value(value = "${spring.datasource.ningxiadatacenterdb.jdbcurl}")
    public void setJdbcurl(String url){
        jdbcurl = url;
    }
    @Value(value = "${spring.datasource.ningxiadatacenterdb.username}")
    public void setUsername(String user){
        username = user;
    }
    @Value(value = "${spring.datasource.ningxiadatacenterdb.password}")
    public void setPassword(String pswd){
        password = pswd;
    }
    /**
     * 连接数据库
     * @return
     */
    public static Connection getConnetions(){
        try {
            try {
                Class.forName(driverClassName);
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }
            return DriverManager.getConnection(jdbcurl, username, password);
        }catch (SQLException e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 查询多条记录
     * @param sql
     * @param args
     * @return
     */
    public static List<Map> queryList( String sql, Object ...args ){
        List<T> list = new ArrayList<>();
        Connection conn = null;
        PreparedStatement rs = null;
        ResultSet resultSet = null;
        //1:准备一个List<Map<String, Object>>集合,其中key为列名,value为列值,每一个map对应一条记录
        List<Map> listMap = new ArrayList<>();
        try {
            //获取数据库连接
            conn = getConnetions();
            rs = conn.prepareStatement(sql);
            //填充占位符
            for(int i = 0; i < args.length; i++){
                rs.setObject(i+1, args[i]);
            }
            //获取结果集
            resultSet = rs.executeQuery();

            //2:得到jdbc的元数据
            ResultSetMetaData rsmd = rs.getMetaData();
            while(resultSet.next()){
                Map<String, Object> map = new HashMap<>();
                for(int i = 0; i < rsmd.getColumnCount(); i++){
                    //游标是从1开始的
                    String columnLabel = rsmd.getColumnLabel(i+1);
                    Object columnValue = resultSet.getObject(columnLabel);
                    map.put(columnLabel, columnValue);
                }
                //3:把一条记录map放入到listMap中
                listMap.add(map);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return listMap;
    }

    /**
     * 新增,修改,删除
     * @param sql
     * @return
     */
    public static int update(String sql){
        Connection conn = null;
        PreparedStatement ps = null;
        int result=0;
        try {
            //创建数据库连接
           conn = getConnetions();
            //创建执行SQL的prepareStatement对象
            ps = conn.prepareStatement(sql);
            //用于增删改操作
            result = ps.executeUpdate();
        } catch (Exception e) {
             System.out.println("出现异常:"+e.getMessage());

        }
        return result;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WS_926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值