Java基础--JDBC

JDBC(Java Database Connectivity) 

Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作

常用的类与接口为DriverManager、Connection、Statement、ResultSet、PreparedStatement , SavePoint

DriverManager

管理JDBC驱动的服务类,通过它获取Connection数据库链接,常用方法如下:
public static synchronized Connection getConnection(String url, String user, String password) throws Exception;

JDBC2.0中引DataSource,推荐使用DataSource获取连接.

PreparedStatement

预编译的statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译SQL,通常指带参数的SQL语句.
无需重新传入SQL语句,避免数据库每次都编译SQL语句。
PreparedStatement可以为编译的SQL语句传入参数值,void setXxx(int index, value)

ResultSet

保存执行Sql后的返回结果集.

java连接Mysql示例

引入Mysql驱动

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.30</version>
</dependency>

------

package jdbc;

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

public class JdbcTest {

    public static void queryForList() {
        Connection connection = null;
        ResultSet resultSet = null;
        PreparedStatement statement = null;

        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
        String url = "jdbc:mysql://192.168.3.5:3306/javaweb";
        String user = "root";
        String pwd = "z";
        String sql = "select * from user_t where id != ? ";

        try {
            // 加载JDBC驱动
            Class clazz = Class.forName("com.mysql.jdbc.Driver");
            System.out.println(clazz);

            // 获取数据库连接
            connection = DriverManager.getConnection(url, user, pwd);

            // 获取Statement,每一个Statement表示一次数据库请求
            statement = connection.prepareStatement(sql);

            // 设置参数
            statement.setString(1, "-1");

            // 执行查询
            resultSet = statement.executeQuery();

            // 获取查询结果
            ResultSetMetaData metadata = resultSet.getMetaData();

            while (resultSet.next()) {
                Map<String, Object> map = new HashMap<String, Object>();
                for (int i = 0,count = metadata.getColumnCount(); i < count; i++) {
                    String columnName = metadata.getColumnName(i + 1);
                    map.put(columnName, resultSet.getString(columnName));
                }
                resultList.add(map);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        //打印结果
        for (Map m : resultList) {
            System.out.println(m);
        }
    }


    public static void main(String[] args) {
        queryForList();
    }

}

------

end

原文地址:https://www.cnblogs.com/luangeng/p/6105411.html