我的任务是一次性从 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 产品上执行查询的信息,但不是来自数字鸿沟。请有经验的朋友指教。感谢您的时间和您可能提供的任何帮助,热心的读者。