64位win7下安装Oracle 11g客户端,执行PL/SQL Developer错误的处理

{ Posted on 星期四, 九月 29, 2011 by Kaiser.XKw }
最近为了方便在查询资料,在NB上装了Oracle 11g的客户端和PL/SQL Developer,发现登入正常,执行却出现ORA-01460的错误。
错误的原因为Oralce服务器与本机客户端的NLS_LANG键值不一致的关系,通过SQLPLUS查询到服务的设定后调整本机的NLS_LANG键值即可。
只是Windows 7 64位版本的键值位置有点不一样, 在如下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home
而不是平常的
HKEY_LOCAL_MACHINE\SOFTWARE \ORACLE\HOME0


想起一起处理过的问题,也一并记下来,留点印象:
当开发WEB应用时,如果是该应用对应单一的Oracle服务器,两者的NLS_LANG键值不一致,用上面的方式修改即可,如果是这个WEB应用需要对应多个Oracle,我们就不能直接改WEB应用所在的服务器上的键值,应该是在读取资料的时候指定Oracle的环境变量。

public void ReadMyData(string connectionString)
{
        //setting Oracle NLS_LANG
        System.Environment.SetEnvironmentVariable("NLS_LANG", "AMERICAN_AMERICA.ZHT32EUC");
        string queryString = "SELECT OrderID, CustomerID FROM Orders";
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
        OleDbCommand command = new OleDbCommand(queryString, connection);
                connection.Open();
                OleDbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
                }
                // always call Close when done reading.
        reader.Close();
        }
}

No Response to "64位win7下安装Oracle 11g客户端,执行PL/SQL Developer错误的处理"