惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
B
Blog
S
SegmentFault 最新的问题
Vercel News
Vercel News
博客园 - 聂微东
宝玉的分享
宝玉的分享
C
Check Point Blog
有赞技术团队
有赞技术团队
IT之家
IT之家
V
V2EX
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
博客园 - 司徒正美
博客园_首页
Last Week in AI
Last Week in AI
博客园 - 叶小钗
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
腾讯CDC
J
Java Code Geeks

博客园 - 半岛拖鞋

Linux下手动安装部署MySQL8.4 Flask JWT简单但完整的项目部署 定位informix oninit进程CPU占用过高的一般步骤 使用Eclipse Memory Analyzer分析java程序占用内存的情况 解决C#连接informix数据库中文乱码 Python手动新建环境 @ApiImplicitParam DataType参数的数据类型 eclise国内镜像下载地址 Spring Initializr - LSP - Failed to fetch Generation from Spring IO: port out of range: -1 oracle express 18安装后初次登录 linux 查找并批量kill进程 从WebService的SOAP返回数据中获取子级的XML内容 C# 进行用(反)序列化方法实现xml与对象进行互相转换 Alpine Linux添加中文支持显示 VBS字符串在不同编码之间的转换 C#根据wsdl文件生成客户端调用代码 PHP 7.4 checking for libzip 和 failed to open error_log 问题 PHP连接Informix异常 CentOS安装扩展软件支持库
C# Odbc Informix读取中文方法
半岛拖鞋 · 2025-01-24 · via 博客园 - 半岛拖鞋

一。 部署好informix服务器后

二。 在windows主机安装好Informix Client-SDK, 这个软件客户端时免费的,可以在官网下载

三。配置好ODBC连接

1.用户名密码服务端口自行填写

2.关于客户语言的配置要使用以下参数:

Client Locale -> en_US.CP1252

Database Locale -> en_US.819

其他参数使用默认值即可:如下图:

四。通过c#读取表数据, 参考以下代码

需要引入: Newtonsoft.Json.dll

C#默认读取的时iso-8859-1, 需要转换为系统默认的:

OdbcConnection connection = new OdbcConnection();
            connection.ConnectionString = "DSN=odbchost;";
            connection.Open();
            OdbcCommand cmd = new OdbcCommand();
            cmd.Connection = connection;
            cmd.CommandText = "select first 3 * from tabname";

            OdbcDataReader reader = cmd.ExecuteReader();
            List<Hashtable> data = new List<Hashtable>();
            
            while (reader.Read())
            {
                int count = reader.FieldCount;
                Hashtable row = new Hashtable();
                for (int i = 0; i < count; i++)
                {
                    string columnName = reader.GetName(i);
                    string dataType = reader.GetDataTypeName(i).ToLower();
                    object value = null;
                    if (!reader.IsDBNull(i))
                    {
                        value = reader.GetValue(i);
                    }
                    if (dataType.Contains("char"))
                    {
                        string v2 = (string)value;
                        string v3 = null;
                        if (v2 != null)
                        {
                            byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(v2);
                            v3 = Encoding.Default.GetString(bytes);
                        }
                        row.Add(columnName, v3);
                    }
                    else
                    {
                        row.Add(columnName, value);
                    }
                    
                }
                data.Add(row);

            }

            string json = JsonConvert.SerializeObject(data);
            Debug.WriteLine(json);