[Примечания JDBC] Краткое руководство по JDBC

JDBC: подключение к базе данных java java подключается к базе данных.

Компания Sun определяет правила (интерфейсы) , которые работают со всеми реляционными базами данных .

Используя единый код Java, вы можете работать со всеми реляционными базами данных.

Каждый поставщик базы данных реализует интерфейс и предоставляет пакет jar драйвера базы данных Фактически выполняемый код представляет собой класс реализации в пакете jar драйвера.


шаг:

1. Импортируйте пакет jar драйвера

Каталог сборки -> пакет палки -> добавить как библиотеку

2. Зарегистрировать драйвер (можно не писать)

3. Получить объект подключения Подключение базы данных

4. Определите SQL

5. Получите оператор объекта, который выполняет оператор sql.

6. Выполнить sql, выполнить возвращаемый результат

7. Обработка результатов

8. Освобождение ресурсов


DriveManager: объект управления приводом

Функции:

Зарегистрируйте драйвер (укажите программе, какой пакет jar драйвера базы данных следует использовать)

static void registerDriver (драйвер драйвера): зарегистрируйте данный драйвер DriveManager

写法:Class.forName("com.mysql.jdbc.Driver");

Принцип: при просмотре исходного кода обнаруживается, что в com.mysql.jdbc.Driver есть блок статического кода, и вызывается метод registerDriver DriveManager.

(После mysql 5 прописывать драйвер не нужно, драйвер прописывается автоматически, рекомендуется его написать)

получить соединение с базой данных

статическое соединение getConnection (URL-адрес строки, пользователь строки, пароль строки)

url: указывает путь соединения 

Синтаксис: jdbc:mysql://ip-адрес:номер порта/имя базы данных

Если соединение установлено с локальным сервером mysql, а порт службы mysql по умолчанию — 3306. URL-адрес может быть сокращен как:

jdbc:mysql:///имя базы данных

Соединение: объект соединения с базой данных

Получить объект, который выполняет sql:

Оператор createStatement()

PrepareStatement prepareStatement (строка sql)

Управлять делами:

* Открытая транзакция

setAutoCommit(boolean autoCommit): вызовите этот метод, чтобы установить для параметра значение false, то есть открыть транзакцию.

* Совершить транзакцию

совершить()

* откат транзакции

откат()

Оператор: используется для выполнения статических операторов SQL.

Выполнить sql:

int executeUpdate(String sql): выполнение операторов DML (вставка, обновление, удаление), операторов DDL (создание, удаление)

Возвращаемое значение: количество затронутых строк

Об успехе оператора DML можно судить по количеству затронутых строк (> 0)

ResultaSet executeQuery(String sql): выполнить инструкцию DQL(select)

ResultSet: объект набора результатов, который инкапсулирует результаты запроса.

Курсор начинается с позиции заголовка

boolean next(): курсор перемещается вниз по строке, чтобы определить, есть ли данные

getXxx(): получить данные. Xxx представляет тип данных

getInt, getString, получить....

параметр:

Передайте int, представляющий номер столбца (начиная с 1)

Передайте строку, представляющую имя столбца getString("sex")

Обход набора результатов:

Класс инструментов JDBC: JDBCUtils (упрощенное написание)

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    //配置文件只读取一次,静态代码块
    static{
        //读取资源文件,获取值
        Properties properties=new Properties();
        //加载文件
        try {
            properties.load(new FileReader("src/jdbc.properties"));
            url=properties.getProperty("url");
            user=properties.getProperty("user");
            password=properties.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnection()  {
        try {
            return DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //释放资源
    public static void close(Statement st,Connection ct){
        if(st!=null){
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ct!=null){
            try {
                ct.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(ResultSet rs,Statement st,Connection ct){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        close(st,ct);
    }

}

PreparedStatement: выполнить объект sql

Проблема с SQL-инъекцией:

При сплайсинге sql есть некоторые специальные ключевые слова sql, участвующие в сплайсинге строк, что вызовет проблемы с безопасностью.

Решение: используйте PreparedStatement для представления объектов и выполнения предварительно скомпилированных операторов SQL (используйте параметры? в качестве заполнителей)

При определении параметра sql для использования? в качестве заполнителя

select *from user where username = ? and password = ?

Получить объект, который выполняет оператор sql

PrepareStatement pre=Connection.prepareStatement(String sql);

 Присвоить значение ?:

setXxx(参数1,参数2)
//参数1:?位置
//参数2:?值

Выполнить sql: не нужно передавать sql

 Примечание. Подготовленный оператор будет использоваться для добавления, удаления и изменения на более позднем этапе.

рекомендация

отblog.csdn.net/m0_52043808/article/details/123952340