0

我们有一个用 vb.net 4.5 编写的应用程序,它使用 ODBC 驱动程序从 Oracle 10g 数据库中检索数据。数据库字符集设置为 us7ascii。我们有包含扩展 ascii 字符的表(例如 ÄÄ 或 ÈÈ )。当我们尝试使用以下代码检索数据时:

        Dim thisCN1 As New System.Data.Odbc.OdbcConnection(connectionString)
        Dim szSql as string="select * from mytable"  
        Dim dt As New DataTable
        Dim dataAdapter As New System.Data.Odbc.OdbcDataAdapter(szSql, thisCN1)
        dataAdapter.Fill(dt)

我们有 ??字符而不是 ÄÄ 或 ÈÈ 在包含扩展 ascii 字符的列中。在选择查询中,我们有一个 varchar2 类型的列(例如 COLUMN_A ),其中包含扩展的 ascii 字符(例如 ÄÄ 或 ÈÈ )。当我们检查结果数据表时,我们发现了一个?字符而不是 ÄÄ 或 ÈÈ 。我们认为问题在于从 us7ascii oracle 数据类型转换为 16 位 unicode 的 vbnet system.string。varchar2 oracle 列似乎映射为 system.string 数据列类型。

为了进一步调查,我们尝试使用 ADODB 记录集获取数据。我们使用了以下代码:

    Dim rs As New ADODB.Recordset
    Dim cn As New ADODB.Connection
    Dim szSql as string="select * from mytable"  
    cn.ConnectionString = "connectionstring"
    cn.Open()
    rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
    rs.Open(szSql, cn)
    rs.ActiveConnection = Nothing

在选择查询中,我们有一个 varchar2 类型的列(例如 COLUMN_A ),其中包含扩展的 ascii 字符(例如 ÄÄ 或 ÈÈ )。当我们检查结果记录集时,我们发现了正确的字符( ÄÄ 或 ÈÈ )。

有谁知道如何告诉 vbnet 数据表不要进行任何类型转换?

4

0 回答 0