项目的调试环境为Windows 7 x64专业版+vs2010+Oracle 11g x64,以前的运行环境不明,应该是运行在32位系统下。
调试中出现的问题:
1. 无法解析制定的字符串。
1.1 在使用PL/SQL时如果版本不对的话会产生这个问题。PL/SQL只有32位的,所以连接64位的数据库需要对oci.dll文件进行设置,这个可以从网上下载32位的oci.dll。在PL/SQL中选择Tools->preferences,在OCI library中填入32位oci.dll地址(PL/SQL并非必须)。
1.2 tnsnames.ora文件配置不正确。
1.3 Oracle对路径比较敏感不能带有括号(重要)。这个问题比较复杂。此时的情况是数据库已经可以连接,在vs中也可以直接连接数据库,项目部署在IIS中也可以使用,只有在调试程序的过程中会产生这个问题。原因在于vs2010在调试过程中会调用C:\Program Files(x86)\Common Files\Microsoft Shared\Devserver\WebDevServer.exe。百度上的解决方法过于麻烦,而且我自己试了一下并没有用。我的解决方法是先在IIS中部署网站,然后在网站的属性页->启动选项中,服务器选择使用自定义服务器,url填写服务器地址。这样就可以在调试中连接数据库了。
2. OCIENVCreate失败,返回代码为-1。
通常原因是权限不够,需要以管理员的身份运行vs2010。