J'écris actuellement une application de discussion à Kotlin et je souhaite mettre en œuvre l'authentification, en stockant des mots de passe hachés sur mon serveur dans une base de données. P>
Je n'ai aucune expérience avec des bases de données, j'ai donc choisi le plus simple que j'ai trouvé celui que j'ai trouvé après environ 30 minutes de recherche de Google. Sqlite. P>
Malheureusement, il n'y a pas de guide de configuration réel pour SQLite à Kotlin. P>
Quelqu'un pourrait-il s'il vous plaît écrir un petit guide étape par étape sur la façon de: p>
Je suis reconnaissant pour toute aide! P>
4 Réponses :
Dès que vous mentionnez Server Strong>, vous cherchez peut-être dans la mauvaise direction. SQLite est conçu comme une base de données intégrée, chaque périphérique ayant sa base de données unique. La synchronisation entre serveur et clients devra être écrite et peut être problématique, tandis que de nombreux ODBM sont ceux qui facilitent mieux les solutions client-serveur. p>
regarder Utilisations appropriées pour SQLite . P>
SQLite ne fonctionne pas avec un modèle client-serveur. Les données sont stockées dans le fichier de votre choix. Il n'y a donc aucune installation à faire. P>
Peut-être que vous pouvez regarder exposé . C'est une bibliothèque de kotlin pour la base de données SQL (SQLite incluse). Il y a une documentation ici . Il vous suffit d'ajouter «org.jetbrains.exposed OEXPOSEDEXPOSED'EXPOSED'EXPOSED'EXPOSED'EXPOSED 'OELVEND (+ La degré de la bibliothèque JDBC, pour SQLLITE Il est' Org.xerial: SQLite-JDBC '). P>
import com.sun.net.httpserver.HttpServer
import java.io.PrintWriter
import java.net.InetSocketAddress
import java.sql.* // Connection, DriverManager, SQLException
import java.util.Properties
/**
https://www.tutorialkart.com/kotlin/connect-to-mysql-database-from-kotlin-using-jdbc/
$ wget https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.27.2.1/sqlite-jdbc-3.27.2.1.jar
$ kotlinc sqws.kt; kotlin -cp ".:./sqlite-jdbc-3.27.2.1.jar" SqwsKt
Minimal embedded HTTP server in Kotlin using Java built in HttpServer
**/
fun main(args: Array<String>) {
val conn = DriverManager.getConnection( "jdbc:sqlite:./sampledb.db")
var stmt: Statement? = null
var resultset: ResultSet? = null
try {
stmt = conn.createStatement()
resultset = stmt!!.executeQuery("SELECT * FROM items;")
if (stmt.execute("SELECT * FROM items;")) {
resultset = stmt.resultSet
}
} catch (ex: SQLException) {
// handle any errors
ex.printStackTrace()
}
HttpServer.create(InetSocketAddress(8080), 0).apply {
println("browse http://localhost:8080/hello")
createContext("/hello") { http ->
http.responseHeaders.add("Content-type", "text/plain")
http.sendResponseHeaders(200, 0);
PrintWriter(http.responseBody).use { out ->
out.println( "ok")
while (resultset!!.next()) {
out.println(resultset.getString("name"))
}
}
}
start()
}
}
Please check the full documentation on Github.
Voici une MWE à l'aide d'API JDBC sur Ubuntu 20.04:
sudo apt install sqlite3
SQLITE_VERSION=`sqlite3 --version | cut -d ' ' -f 1` # 3.31.1 on Ubuntu 20.04
curl -s https://get.sdkman.io | bash
sdk i java # for JDBC
sdk i maven # for JDBC interface to SQLite (see later)
sdk i kotlin 1.4.10 # later versions are currently affected by:
# https://youtrack.jetbrains.com/issue/KT-43520
cat > demo.main.kts <<EOF
#!/usr/bin/env kotlin
# uses maven to install the dependency from maven central:
# reference: https://github.com/Kotlin/KEEP/blob/master/proposals/scripting-support.md#kotlin-main-kts
@file:DependsOn("org.xerial:sqlite-jdbc:$SQLITE_VERSION")
import java.sql.DriverManager
import java.sql.Connection
import java.sql.Statement
import java.sql.ResultSet
# creates or connects to database.sqlite3 file in the current directory:
var connection = DriverManager.getConnection("jdbc:sqlite:database.sqlite3")
var statement = connection.createStatement()
statement.executeUpdate("drop table if exists people")
statement.executeUpdate("create table people (id integer, name string)")
statement.executeUpdate("insert into people values(1, 'leo')")
statement.executeUpdate("insert into people values(2, 'yui')")
var resultSet = statement.executeQuery("select * from people")
while ( resultSet.next() ) {
println( "id = " + resultSet.getInt("id") )
println( "name = " + resultSet.getString("name") )
println()
}
connection.close()
EOF
chmod +x demo.main.kts
./demo.main.kts
Parlez-vous de ... une application de bureau, un serveur (?? Pourquoi utiliser SQLite dans un serveur ??) ou un client mobile?
Je parle d'un serveur.
Ensuite, vous pouvez utiliser quelque chose de plus raisonnable comme MySQL ou PostgreSQL. Ensuite, si vous souhaitez utiliser le serveur pur-kotlin (et pas de démarrage de printemps par exemple), vous pouvez vous référer à ryanharison.co.uk/2018/04/14/kotlin-ktor-exposed-starter.ht ml espérons que (KTOR est un serveur de kotlin et exposé est un orm pour Kotlin sur SQL DBS). Vous pouvez également consulter KOTLINCONF 2018 pour certaines vidéos et entretiens associés à la liste.