Java jdbc

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.13往pom.xml中添加依赖

 jdbc:Java database connection。Java数据库链接技术,就是通过代码来连接数据库,操作数据库的一种技术。

数据库:保存数据的仓库,几乎所有的项目都会用到数据库来保存项目的数据。

package com.zcq.maven.jdbc;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import com.mysql.cj.protocol.Resultset;

public class JDBCDemo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JDBCDemo1 demo1 = new JDBCDemo1();
        String sqlString = "select name,address from student where id=? and phonenumber=?";
        Object[] valuesObjects = { "2012323", "1382323445" };
        Map<String, Object> columLabelAndValues = demo1.query(sqlString, valuesObjects);
        Set<String> coumLabel = columLabelAndValues.keySet();
        for (String columLabel : coumLabel) {
            System.out.println("columLabel" + columLabel + "columValues" + columLabelAndValues.get(columLabel));

        }
    }

    public static Properties properties = new Properties();
    static {
        try {
            System.out.println("静态代码块解析properties文件");
            InputStream iStream = new FileInputStream(new File("   "));// 此处差配置jdbc的路径
            properties.load(iStream);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Map<String, Object> query(String sql, Object... values) {
        // 数据库的查询

        // 1.根据连接信息,获得数据库的连接
        // String url="jdbc:mysql://localhost:3306/demo";//jdbc:mysql:是固定的
        // String user="zcq";
        // String password="admin";
        // "?":代表占位符,进行预编译,防止sql注入
        // String sql="select name,address from student where id=? and phonenumber=?";
        Map<String, Object> columnLableAndValuesMap = null;
        try {// 根据连接信息 获得数据库连接
            Connection connection = getConnection();
            // 2.获取PreparedStatement对象(此类型的对象有提供数据库操作方法)
            PreparedStatement prepareStatement = connection.prepareStatement(sql);
            // 3.设置条件字段的值
            for (int i = 0; i < values.length; i++) {
                prepareStatement.setObject(i + 1, values[i]);// i代表数组的索引,+1是sql里面的字段
            }
            // 4.调用查询方法,执行查询 返回结果集
            ResultSet resultset = prepareStatement.executeQuery();
            // 获取查询相关的信息
            ResultSetMetaData resultMetaDta = resultset.getMetaData();
            // 得到查询字段的数目
            int columnCount = resultMetaDta.getColumnCount();

            columnLableAndValuesMap = new HashMap<String, Object>();
            // 5.从结果集查询集合
            while (resultset.next()) {
                // 循环取出每个查询字段的数据
                for (int i = 1; i < columnCount; i++) {
                    String columnLable = resultMetaDta.getColumnLabel(i);// 传列号得到列名
                    String columnValue = resultset.getObject(columnLable).toString();
                    columnLableAndValuesMap.put(columnLable, columnValue);
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return columnLableAndValuesMap;
    }

    public static Connection getConnection() throws SQLException {
        // 获取数据库连接

        // 直接从properties中取url,user,password
        String urlString = properties.getProperty("jdbc.url");// 配置文件里面的键jdbc.url
        String userString = properties.getProperty("jdbc.user");
        String password = properties.getProperty("jdbc.password");
        Connection connection = DriverManager.getConnection(urlString, userString, password);
        return connection;
    }
}
View Code

 

posted @ 2019-11-16 20:45  小猪猪猪  阅读(73)  评论(0)    收藏  举报