AS400_API_DOTNET/Configuration/OdbcOptions.cs
2025-10-17 16:01:56 +07:00

39 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
namespace AS400API.Configuration;
public sealed class OdbcOptions
{
public string? System { get; set; }
public string? DefaultLibraries { get; set; }
public string? User { get; set; }
public string? Password { get; set; }
/// <summary>
/// 0 = SQL naming (*SYS = library/file); 1 = System naming (*SYS). Keep 1 by default.
/// </summary>
public string? Naming { get; set; }
public string? Translate { get; set; } = "1";
public string? ClientLocale { get; set; } = "en_US";
public bool Pooling { get; set; } = true;
public string ToConnectionString()
{
// Driver name must match installed name in odbcinst.ini
var driverName = Environment.GetEnvironmentVariable("AS400_DRIVER_NAME") ?? "IBM i Access ODBC Driver";
var parts = new List<string>
{
$"Driver={{{driverName}}}",
$"System={System}"
};
if (!string.IsNullOrWhiteSpace(DefaultLibraries)) parts.Add($"DefaultLibraries={DefaultLibraries}");
if (!string.IsNullOrWhiteSpace(User)) parts.Add($"Uid={User}");
if (!string.IsNullOrWhiteSpace(Password)) parts.Add($"Pwd={Password}");
if (!string.IsNullOrWhiteSpace(Naming)) parts.Add($"Naming={Naming}");
if (!string.IsNullOrWhiteSpace(Translate)) parts.Add($"TRANSLATE={Translate}");
if (!string.IsNullOrWhiteSpace(ClientLocale)) parts.Add($"Client_Locale={ClientLocale}");
if (Pooling) parts.Add("Pooling=true");
return string.Join(";", parts);
}
}