是这样,小弟是超级新手,用的win7 64位的系统,机器上装的VS2008和Oracle 11g,这两个软件都是32的,今天在数据库中随便建了表,想试试如何连接和查询,结果一运行就弹出提示框,vshost.exe已经停止运行,关掉提示框,程序就停止了。代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;namespace JustDoIt
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Start ! ");
            String conString = "Data Source = WENHAO; User Id = system ; Password = *******;";
            String sql = "SELECT STU_ID FROM STUDENT";
            OracleConnection conn = new OracleConnection(conString);
            conn.Open();
            OracleCommand cmd = new OracleCommand(sql, conn);
            OracleDataReader myReader = cmd.ExecuteReader();//这行没出错
            while (myReader.Read())//到这里就挂掉了
            {
                Console.WriteLine(myReader.GetInt32(0));
            }
            myReader.Close();
            conn.Close();
            Console.ReadKey();
        }   
    }
}逐行运行,发现就在我代码注释的那个地方挂掉了,每次都是弹出那个提示框,崩溃了,搞了一个下午了,没有弄明白,网上这个问题貌似出现的还不多,也没有什么有效的解决办法,各位大大们,救救我吧!!!

解决方案 »

  1.   


    myReader.Close();
    删除
      

  2.   

    把程序编译位32位的或者安装64位的客户端
    Oracle 11g R2 Client X64
     public static string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ProgramInfo.Dbip + ")(PORT=1521)))  (CONNECT_DATA=(SERVICE_NAME=" + ProgramInfo.Dbname + ")));User Id=" + ProgramInfo.Username + "; Password=" + ProgramInfo.Password + ";Unicode=True ";
      

  3.   


    这位大哥说得好像很有道理哦,能麻烦问下怎么把程序编译成32位的吗?
    我这里网速不怎么样,下个oracle比较麻烦
      

  4.   

    OK了,这个问题解决了,5楼高手哦可是新问题又出来了运行后报错,说没找到表“ORA-00942: 表或视图不存在”。。How to do ........
      

  5.   

    应该是系统的问题,64位系统不支持32位的开发环境的,我建议你装个32位的windows7