如何将我的Oracle会话的全球化设置为与.NET中的Windows相同?

例如,如果我能做到以下几点,那将是非常好的:

private void SetSessionGlobalization(Oracle.DataAccess.Client.OracleConnection aConnection) { System.Globalization.CultureInfo lCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; aConnection.SetSessionInfo(lCultureInfo); } 

但是这不起作用,因为SetSessionInfo将OracleGlobalization类作为参数,而不是CultureInfo!

这也不起作用:

 private void SetSessionGlobalization(Oracle.DataAccess.Client.OracleConnection aConnection) { Oracle.DataAccess.Client.OracleGlobalization lClientGlobalization = Oracle.DataAccess.Client.OracleGlobalization.GetClientInfo()); aConnection.SetSessionInfo(lClientGlobalization); } 

由于GetClientInfo获取Oracle版本的客户端全球化设置,而不是Windows

我在这里错过了什么? 我如何设置我的数据库连接会话是相同的,我的线程使用(这将是默认的Windows相同)?

我想你必须手动分配每个属性。 这将是这样的。

 private void SetSessionGlobalization(Oracle.DataAccess.Client.OracleConnection aConnection) { OracleGlobalization info = aConnection.GetSessionInfo(); System.Globalization.CultureInfo lCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; var ri = new System.Globalization.RegionInfo(lCultureInfo.LCID); info.Calendar = lCultureInfo.Calendar.GetType().Name.Replace("Calendar", String.Empty); info.Currency = ri.CurrencySymbol; info.DualCurrency = ri.CurrencySymbol; info.ISOCurrency = ri.ISOCurrencySymbol; info.DateFormat = lCultureInfo.DateTimeFormat.ShortDatePattern + " " + lCultureInfo.DateTimeFormat.ShortTimePattern.Replace("HH", "HH24").Replace("mm", "mi"); info.DateLanguage = System.Text.RegularExpressions.Regex.Replace(lCultureInfo.EnglishName , @" \(.+\)",String.Empty); info.NumericCharacters = lCultureInfo.NumberFormat.NumberDecimalSeparator + lCultureInfo.NumberFormat.NumberGroupSeparator; info.TimeZone = String.Format("{0}:{1}", TimeZoneInfo.Local.BaseUtcOffset.Hours, TimeZoneInfo.Local.BaseUtcOffset.Minutes); info.Language = ... info.Territory = ... info.TimeStampFormat = ... info.TimeStampTZFormat = ... try { aConnection.SetSessionInfo(info); } catch ( OracleException err ) { MessageBox.Show(err.Message); } } 

您必须进行几种翻译,例如日期格式或区域/语言。 我希望你有一个想法如何做到这一点。

注意一些(重要的)设置(例如ClientCharacterSet )是只读的,这些值是从注册表或环境变量派生的,并在打开连接时进行设置。

所以,首选的方法是使用注册表或环境变量,那么你不必设置OracleGlobalization