Partager via


Exemple de types de données de base

Télécharger le pilote JDBC

Cet exemple d’application du pilote Microsoft JDBC pour SQL Server montre comment utiliser les méthodes getter du jeu de résultats pour récupérer les valeurs des types de données SQL Server de base, et comment utiliser les méthodes update du jeu de résultats pour mettre à jour ces valeurs.

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

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

Spécifications

Pour exécuter cet exemple d’application, définissez le classpath de façon à inclure le fichier jar mssql-jdbc. Vous devez également avoir accès à l’exemple de base de données AdventureWorks2022. Pour plus d’informations sur la façon de définir l’instruction classpath, consultez à l’aide du pilote JDBC.

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

Notes

Le Pilote Microsoft JDBC pour SQL Server fournit les fichiers bibliothèques de classes mssql-jdbc à utiliser en fonction des paramètres JRE (Java Runtime Environment) choisis. Pour plus d’informations sur le fichier JAR à choisir, voir Configuration requise pour le pilote JDBC.

Exemple

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

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

Enfin, l'exemple actualise les données du jeu de résultats, puis rappelle la méthode personnalisée displayRow pour les afficher.

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>;encrypt=true;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();
        }
    }
}

Voir aussi

Utilisation des types de données (JDBC)