当用ASP.NET Core 2带有OracleClient的ASP.NET CORE 2从Oracle 11G撤回Va



我目前正在面临一个烦人的问题,很乐意获得一些见解。

我正在开发一个简单的应用程序,该应用程序从Oracle 11g db中重述一些记录并显示它们。

我正在使用asp.net core 2和system.data.oracleclient软件包来执行与DB的连接。

但是,当我做一个简单的选择和retreive varchar2字段时,如以下片段:

// Init connection
var connection = new OracleConnection(connectionString);
// Create query command
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = "select * from mytable";
// Execute query
var reader = cmd.ExecuteReader();
// Go through all retreived raw and display only the string fields
while (reader.Read()) {
    object[] rawRow = new object[reader.FieldCount];
    foreach(var o in rawRow) {
        if( o is string ){
            // Display the string
        }
    }
}

我用一个额外的拖尾垃圾来重述字符串,例如:" myvalue翙"翙确实是一个额外的字符,它不存在于DB中存储的字段中。当我使用SQL 客户端时,我不会得到此字符。

如果第一次怀疑一个字符集问题,但是作为char i额外的一个,价值字段仅包含ascii char,则不应是...

敲响任何人吗?

dbmOracle 11G

NLS_NCHAR_CHARACTERSET AL16UTF16

nls_characterset WE8MSWIN1252

预先感谢

编辑:

客户端:Oracle 12c在路径和reg中(32位或64位):

nls_lang french_france.we8mswin1252

编辑2:

额外的角色可以改变,得到ꌽ,⌴和其他一些。它看起来确实像是一个炭化转换问题,但在连接器级别:(。

编辑3:

我刚刚与非官方单声道的Oracle客户端(Mono.Data.oracleClientCore)进行了测试,并且得到了相同的结果。现在我怀疑这可能是连接器。也许基于OCI的客户不会阅读路径或注册表conf ...

oracle中的varchar2字段作为字节存储数据。因此,为了有效提取每个值,您可以使用以下数据类型:

1-字节

2 -char

3- char []

4 -int

您可以看到此Oracle文档的每个Oracle数据类型的映射到.NET

相关内容

  • 没有找到相关文章

最新更新