Basis data
Peringatan
These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!
SQL
Spons menyediakan perangkat abstraksi untuk membangun koneksi database JDBC yang menangani kompleksitas mendirikan efisien dikumpulkan koneksi dari JDBC URL.
Sementara layanan SQL mendukung JDBC connector, Menempa pelaksanaan Spons hanya kapal dengan yang paling umum:
Sql Saya
Sqlite
H2
Peringatan
Karena Sqlite memiliki banyak keterbatasan, penggunaannya sangat tidak dianjurkan kecuali dalam kasus di mana warisan kompatibilitas diperlukan. H2 adalah kita dianjurkan file yang didukung implementasi database.
Pemakaan
Sumber data yang dapat diakses melalui layanan plugin manager:
import org.spongepowered.api.Sponge;
import org.spongepowered.api.service.sql.SqlService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
private SqlService sql;
public DataSource getDataSource(String jdbcUrl) throws SQLException {
if (sql == null) {
sql = Sponge.getServiceManager().provide(SqlService.class).get();
}
return sql.getDataSource(jdbcUrl);
}
// Later on
public void myMethodThatQueries() throws SQLException {
String uri = "jdbc:h2:imalittledatabaseshortandstout.db";
String sql = "SELECT * FROM test_tbl";
try (Connection conn = getDataSource(uri).getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet results = stmt.executeQuery()) {
while (results.next()) {
// ...
}
}
}
URL JDBC seharusnya diperoleh dari SqlService#getConnectionUrlFromAlias(String), dengan sebuah alias yang cocok dengan salah satu dari alias URL JDBC yang terdaftar dalam konfigurasi Sponge global (config/sponge/global.conf
) di bawah kunci sponge.sql.aliases
.
Layanan SQL menyediakan koneksi yang terkumpul, sehingga mendapatkan koneksi dari DataSource
yang dikembalikan nilainya tidaklah memakan banyak memori. Maka dari itu, kita merekomendasikan agar tidak menyimpan koneksi di sekitar, dan menutupnya segera setelah penggunaan yang telah ditunjukkan di atas. Setiap PreparedStatement
dan ResultSet
yang dibuat harus ditutup juga setelah digunakan, dengan object.close()
atau, sebaiknya, melalui blok try-with-resources.
NoSQL
Sponge does not currently provide any special abstraction over NoSQL databases (MongoDB etc.). Plugins that wish to use NoSQL databases must provide their own connectors.