C#访问US7ASCII编码的oracle数据库

前段时间node中调用oracle数据库乱码,oracle数据库是用的US7ASCII编码的,而node-oracledb模块调用oracle数据库时始终使用了AL32UTF8字符集,导致不管怎么设置客户端字符集或者是环境变量查询出来都是乱码,最终就改变了方案使用C#写了一个类库,再在nodejs中去调用拿数据。

Oracle Data Access Components (ODAC) +OleDbConnection

1.下载ODAC组件

2.解压缩文件包,并安装组件,选择Oracle Client 即可

3.修改安装目录 C:\app\Administrator\product\11.2.0\client_1\Network\Admin(安装目录根据前面的安装可以有所不同) 下的 tnsnames.ora 文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckUucGDH-1574649715449)(在这里插入图片描述])

4.编写访问数据库的C#代码(OleDb驱动)

public void Query()
{
	using (OleDbConnection conn = new OleDbConnection(connString))
            {
                try
                {
                    conn.Open();
                    OleDbCommand com = new OleDbCommand(querySql, conn);
                    OleDbDataAdapter oda = new OleDbDataAdapter(com);
                    DataSet ds = new DataSet();
                    oda.Fill(ds);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                        conn.Dispose();
                    }
                }
            }
}

注意:

  • 需要用OleDbConnection进行连接,System.Data.OracleClient.OracleConnection和Oracle.DataAccess.dll仍然会出现乱码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是C#连接Oracle数据库的示例代码: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using Oracle.DataAccess.Client; namespace OracleDemo { class Program { static void Main(string[] args) { string connStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));User ID=scott;Password=tiger"; using (OracleConnection conn = new OracleConnection(connStr)) { try { conn.Open(); OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM emp"; OracleDataAdapter adapter = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) { Console.WriteLine(row["empno"] + "\t" + row["ename"] + "\t" + row["job"] + "\t" + row["mgr"] + "\t" + row["hiredate"] + "\t" + row["sal"] + "\t" + row["comm"] + "\t" + row["deptno"]); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { conn.Close(); } } Console.ReadLine(); } } } ``` 在这个示例中,需要引用Oracle.DataAccess.dll库。您可以通过NuGet包管理器安装Oracle.ManagedDataAccess或Oracle.ManagedDataAccess.Core包,也可以手动安装Oracle客户端并添加Oracle.DataAccess.dll引用。 在连接字符串中,需要替换主机名、端口、服务名、用户名和密码为您的实际值。 示例中使用OracleCommand和OracleDataAdapter来执行查询并获取数据。通过DataSet可以方便地处理数据并进行输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值