前段时间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仍然会出现乱码。