Vous êtes ici : » Accueil» MySQL » SQL Server : JDBC, Exemple de types de données de base

SQL Server : JDBC, Exemple de types de données de base

(Dernière mise à jour le: 21 septembre 2021)

Cet exemple d’application de pilote JDBC Microsoft pour SQL Server montre comment utiliser les méthodes d’extraction d’ensemble de résultats pour récupérer les valeurs de type de données SQL Server de base et comment utiliser les méthodes de mise à jour d’ensemble de résultats pour mettre à jour ces valeurs.

Le fichier de code de cet exemple s’appelle BasicDataTypes.java et se trouve à l’emplacement suivant :

\<installation directory>\sqljdbc_<version>\<language>\samples\datatypes

Conditions

Pour exécuter cet exemple d’application, vous devez définir le chemin de classe pour inclure le fichier jar mssql-jdbc. Vous aurez également besoin d’accéder à la base de données exemple. Pour plus d’informations sur la définition du chemin de classe, consultez Utilisation du pilote JDBC .

L’exemple crée la table requise et insère des exemples de données dans la base de données exemple :

Note Le pilote Microsoft JDBC pour SQL Server fournit des fichiers de bibliothèque de classes mssql-jdbc à utiliser en fonction de vos paramètres d’environnement d’exécution Java (JRE) préférés. Pour plus d’informations sur le fichier JAR à choisir, consultez Configuration requise pour le pilote JDBC .

Exemple

Dans l’exemple suivant, l’exemple de code établit une connexion à la base de données, puis récupère une seule ligne de données de la table de test DataTypesTable. La méthode displayRow personnalisée est ensuite appelée pour afficher toutes les données du jeu de résultats à l’aide de diverses méthodes get<Type> de la SQLServerResultSet classe .

Ensuite, l’exemple utilise diverses méthodes update<Type> de la classe SQLServerResultSet pour mettre à jour les données dans le jeu de résultats, puis appelle la updateRow méthode pour conserver ces données dans la base de données.

Enfin, l’exemple actualise les données dans l’ensemble de résultats, puis appelle à nouveau la méthode displayRow personnalisée pour afficher les données dans l’ensemble de résultats.

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;

import com.microsoft.sqlserver.jdbc.SQLServerResultSet;

import microsoft.sql.DateTimeOffset;


public class DatatypesTest {
private static final String tableName = "DataTypesTable";

public static void main(String[] args) {

// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://<server>:<port>;databaseName=<database>;user=<user>;password=<password>";

try (Connection con = DriverManager.getConnection(connectionUrl);
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);) {

dropAndCreateTable(stmt);
insertOriginalData(con);

String SQL = "SELECT * FROM " + tableName;
ResultSet rs = stmt.executeQuery(SQL);
rs.next();
displayRow("ORIGINAL DATA", rs);

// Update the data in the result set.
rs.updateString(2, "B");
rs.updateString(3, "Some updated text.");
rs.updateBoolean(4, true);
rs.updateDouble(5, 77.89);
rs.updateDouble(6, 1000.01);
long timeInMillis = System.currentTimeMillis();
Timestamp ts = new Timestamp(timeInMillis);
rs.updateTimestamp(7, ts);
rs.updateDate(8, new Date(timeInMillis));
rs.updateTime(9, new Time(timeInMillis));
rs.updateTimestamp(10, ts);
rs.updateTimestamp(11, ts);
rs.updateObject(12, 987654321L, microsoft.sql.Types.SQL_VARIANT);

// -480 indicates GMT - 8:00 hrs
((SQLServerResultSet) rs).updateDateTimeOffset(11, DateTimeOffset.valueOf(ts, -480));

rs.updateRow();

// Get the updated data from the database and display it.
rs = stmt.executeQuery(SQL);
rs.next();
displayRow("UPDATED DATA", rs);
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}

private static void displayRow(String title, ResultSet rs) throws SQLException {
System.out.println(title);
System.out.println(rs.getInt(1) + " , " + // SQL integer type
rs.getString(2) + " , " + // SQL char type
rs.getString(3) + " , " + // SQL varchar type
rs.getBoolean(4) + " , " + // SQL bit type
rs.getDouble(5) + " , " + // SQL decimal type
rs.getDouble(6) + " , " + // SQL money type
rs.getTimestamp(7) + " , " + // SQL datetime type
rs.getDate(8) + " , " + // SQL date type
rs.getTime(9) + " , " + // SQL time type
rs.getTimestamp(10) + " , " + // SQL datetime2 type
((SQLServerResultSet) rs).getDateTimeOffset(11) + " , " + // SQL datetimeoffset type
rs.getObject(12)); // SQL sqlvariant type
System.out.println();
}

private static void dropAndCreateTable(Statement stmt) throws SQLException {
stmt.executeUpdate("if object_id('" + tableName + "','U') is not null" + " drop table " + tableName);

String sql = "create table " + tableName + " (" + "c1 int, " + "c2 char(20), " + "c3 varchar(20), " + "c4 bit, "
+ "c5 decimal(10,5), " + "c6 money, " + "c7 datetime, " + "c8 date, " + "c9 time(7), "
+ "c10 datetime2(7), " + "c11 datetimeoffset(7), " + "c12 sql_variant" + ");";

stmt.execute(sql);
}

private static void insertOriginalData(Connection con) throws SQLException {
String sql = "insert into " + tableName + " values( " + "?,?,?,?,?,?,?,?,?,?,?,?" + ")";
try (PreparedStatement pstmt = con.prepareStatement(sql)) {
pstmt.setObject(1, 100);
pstmt.setObject(2, "original text");
pstmt.setObject(3, "original text");
pstmt.setObject(4, false);
pstmt.setObject(5, 12.34);
pstmt.setObject(6, 56.78);
pstmt.setObject(7, new java.util.Date(1453500034839L));
pstmt.setObject(8, new java.util.Date(1453500034839L));
pstmt.setObject(9, new java.util.Date(1453500034839L));
pstmt.setObject(10, new java.util.Date(1453500034839L));
pstmt.setObject(11, new java.util.Date(1453500034839L));
pstmt.setObject(12, 123456789L, microsoft.sql.Types.SQL_VARIANT);
pstmt.execute();
}
}
}

 

Laisser un commentaire

Translate »