Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<EnableWindowsTargeting>true</EnableWindowsTargeting>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.Data.OleDb" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,69 @@
|
||||
// Probe pour tester la récupération de l'identifiant auto-généré HFSQL
|
||||
// après un INSERT réel dans une transaction.
|
||||
// Écriture dans BATIK_TEST (base de test confirmée) avec référence unique E2E_PROBE_.
|
||||
using System.Data.OleDb;
|
||||
|
||||
const string server = "127.0.0.1";
|
||||
const int port = 4900;
|
||||
const string user = "susana";
|
||||
const string password = "123";
|
||||
|
||||
string BuildConnStr(string database) =>
|
||||
$"Provider=PCSOFT.HFSQL;Data Source={server}:{port};Initial Catalog={database};User ID={user};Password={password}";
|
||||
|
||||
string reference = $"E2E_PROBE_{DateTime.Now:HHmmss}";
|
||||
Console.WriteLine($"=== Test INSERT + LAST_INSERT_ID() (base BATIK_TEST) ===");
|
||||
Console.WriteLine($" Référence unique: {reference}");
|
||||
|
||||
try
|
||||
{
|
||||
using var conn = new OleDbConnection(BuildConnStr("BATIK_TEST"));
|
||||
conn.Open();
|
||||
|
||||
using var tx = conn.BeginTransaction();
|
||||
|
||||
// INSERT dans Intervention (IN_PKID auto-généré).
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tx;
|
||||
cmd.CommandText = "INSERT INTO Intervention (IN_IDTypeIntervention, IN_Titre, IN_RefInterne, IN_Description, Archive, CreationDate, ModifDate) VALUES (?, ?, ?, ?, ?, ?, ?)";
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = 1 });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = "Probe LAST_INSERT_ID" });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = reference });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = "Probe test" });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = false });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = DateTime.Now });
|
||||
cmd.Parameters.Add(new OleDbParameter { Value = DateTime.Now });
|
||||
int rows = cmd.ExecuteNonQuery();
|
||||
Console.WriteLine($" INSERT exécuté, rows={rows}");
|
||||
}
|
||||
|
||||
// Test LAST_INSERT_ID() dans la même transaction.
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tx;
|
||||
cmd.CommandText = "SELECT LAST_INSERT_ID()";
|
||||
var value = cmd.ExecuteScalar();
|
||||
Console.WriteLine($" LAST_INSERT_ID() -> {(value is null || value == DBNull.Value ? "NULL" : value)}");
|
||||
}
|
||||
|
||||
// Test MAX(IN_PKID) pour comparaison.
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tx;
|
||||
cmd.CommandText = "SELECT MAX(IN_PKID) FROM Intervention";
|
||||
var value = cmd.ExecuteScalar();
|
||||
Console.WriteLine($" MAX(IN_PKID) -> {(value is null || value == DBNull.Value ? "NULL" : value)}");
|
||||
}
|
||||
|
||||
// ROLLBACK pour ne pas laisser de données.
|
||||
tx.Rollback();
|
||||
Console.WriteLine(" ROLLBACK effectué (aucune donnée laissée).");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($" ERREUR: {ex.Message}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Probe INSERT + LAST_INSERT_ID() terminé.");
|
||||
Reference in New Issue
Block a user