ODBC连接问题:执行任何操作时的函数序列错误

时间:2013-04-16 17:08:26

标签: c# sql odbc data-migration 4d-database

我的任务是从4D数据库一次性迁移到MSSQL结构。我在ODBC管理员中设置了一个数据源,我可以毫无问题地连接到它。

我反过来设计了Visio中的模式,因此我可以很好地了解表之间的关系,并计划如何重新构建4D数据以适应我们的模式。我创建了一个简单的控制台应用程序,因为这将是一次性运行,并且我能够连接到数据源,但是只要我执行任何操作,连接就会丢失或被禁用。

  System.Data.Odbc.OdbcConnection conn = 
               new System.Data.Odbc.OdbcConnection("Dsn=4D v12 datasource");
        try
        {
            conn.Open();
            Console.WriteLine("Status of Connection:" + conn.State.ToString());
            //Here it says the connection to the DB is open and ready for action
            Console.ReadLine(); 
            //pause to visually confirm  the connection is open
            OdbcCommand com = new OdbcCommand("SELECT * FROM ATable", conn);
            com.CommandType = CommandType.Text;
            Console.Write(com.ExecuteNonQuery());
            //Right here it blows up and closes the connection                
         }

我也试图用数据集和数据适配器做些什么,但无济于事。

System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection("Dsn=4D v12 datasource");
        try
        {
            conn.Open();
            Console.WriteLine("Status of Connection:" + conn.State.ToString());                
            Console.ReadLine();
            OdbcCommand com = new OdbcCommand("SELECT * FROM ATable", conn);
            com.CommandType = CommandType.Text;
            //Also tried using data sets and data adapters
            DataSet dsTest = new DataSet();
            OdbcDataAdapter dataAdapter = new OdbcDataAdapter(com);
            //but right at this line the connection suddenly disconnects
            dataAdapter.Fill(dsTest);

        }
        catch (Exception e)
        {
            Console.WriteLine("Failure:" + e.Message.ToString());
            // the exception message reads simply connection has been disabled. 
            Console.WriteLine("Status of Connection: " + conn.State.ToString());
            Console.ReadLine();
        }
        finally 
        {
            Console.Write("Closing connection.");
            conn.Close();
            Console.Write(".");
            conn.Dispose();
            Console.WriteLine(".");
            Console.WriteLine("Connection Closed and Disposed");
            Console.ReadLine();
        }

我试图寻找遇到同样困难的人,但我发现的文档很少,在这方面也没什么帮助。关于在4D产品上执行查询的信息很多,但不是来自数字鸿沟。任何有经验的人请指教。感谢您的时间和任何帮助,您可以给予狂热的读者。

1 个答案:

答案 0 :(得分:1)

显然问题的根本原因在于驱动程序。在更换了我从网站上获得的驱动程序时,从连接器发送的驱动程序,连接已停止被禁用,所有连接都按预期工作。