Для работы с базой данных PostgreSQL в Kotlin/Native можно использовать библиотеку libpq, которая является клиентской библиотекой для PostgreSQL. Чтобы начать работу, вам потребуется установить библиотеку libpq на вашей системе и настроить окружение для сборки Kotlin/Native.
Шаг 1: Установка libpq
Для установки libpq вам необходимо выполнить следующие команды в терминале (предполагается, что у вас уже установлен PostgreSQL):
Для Ubuntu/Debian:
sudo apt-get install libpq-dev
Для CentOS/RHEL:
sudo yum install postgresql-devel
Для macOS:
brew install postgresql
Шаг 2: Настройка окружения Kotlin/Native
Чтобы настроить окружение Kotlin/Native, вам следует установить Kotlin/Native compiler и Gradle Kotlin/Native plugin. Подробные инструкции по установке и настройке можно найти в официальной документации Kotlin/Native.
Шаг 3: Добавление зависимостей
Откройте файл build.gradle.kts вашего проекта Kotlin/Native и добавьте следующие зависимости:
kotlin { // ... sourceSets { // ... val nativeMain by getting { dependencies { // ... implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.18.0") implementation("org.postgresql:postgresql:42.2.23") // библиотека libpq } } } }
Шаг 4: Использование libpq в Kotlin/Native
Теперь вы можете использовать библиотеку libpq для взаимодействия с базой данных PostgreSQL в коде на Kotlin/Native. Вот пример простого подключения к базе данных и выполнения запроса:
import kotlinx.cinterop.cstr import kotlinx.cinterop.memScoped import kotlinx.cinterop.toKString import libpq.* fun main() { // Инициализация libpq PQinitOpenSSL(0, null) // Подключение к базе данных val conninfo = "host=localhost dbname=mydb user=postgres password=secret" memScoped { val conn = PQconnectdb(conninfo.cstr.ptr) // Проверка статуса подключения if (PQstatus(conn) == ConnStatusType.CONNECTION_OK) { println("Successfully connected to database.") // Выполнение запроса val res = PQexec(conn, "SELECT * FROM users") if (PQresultStatus(res) == ExecStatusType.TUPLES_OK) { val numRows = PQntuples(res) for (i in 0 until numRows) { val username = PQgetvalue(res, i, 0)?.toKString() val email = PQgetvalue(res, i, 1)?.toKString() println("Username: $username, Email: $email") } } else { println("Query execution failed.") } // Освобождение результата и закрытие соединения PQclear(res) PQfinish(conn) } else { println("Connection failed.") val errorMsg = PQerrorMessage(conn)?.toKString() println("Error message: $errorMsg") } } // Освобождение libpq PQinitOpenSSL(0, null) }
В этом примере мы инициализируем libpq, подключаемся к базе данных, выполняем простой запрос SELECT и выводим результаты. Затем мы освобождаем ресурсы libpq и закрываем соединение.
Надеюсь, этот подробный ответ поможет вам начать работать с базой данных PostgreSQL в Kotlin/Native. Удачи в разработке!