C# Transoft ODBC sqlReader错误:文件不存在:TableName

C# Transoft ODBC sqlReader错误:文件不存在:TableName,c#,sql,odbc,transoft,C#,Sql,Odbc,Transoft,我有一个关于连接并从DSN中获取表名的问题,DSN显然是Transoft驱动程序。这个问题是: 在这个答案起作用之后,我可以显示所有的表名。现在我发现,阅读这些表格仍然不起作用。我得到一个错误: 无法连接到数据源:错误[HY000][Transoft][TSODBC][usqlsd](日志:5852-142748)文件不存在:APPT 其中APPT是它读取的表名。目前,这是一段简单的代码: void dumbRead(String tableName) { OdbcCo

我有一个关于连接并从DSN中获取表名的问题,DSN显然是Transoft驱动程序。这个问题是:

在这个答案起作用之后,我可以显示所有的表名。现在我发现,阅读这些表格仍然不起作用。我得到一个错误:

无法连接到数据源:错误[HY000][Transoft][TSODBC][usqlsd](日志:5852-142748)文件不存在:APPT

其中APPT是它读取的表名。目前,这是一段简单的代码:

void dumbRead(String tableName)
    {
        OdbcCommand sqlCommand = conn.CreateCommand();
        // execute sql
        sqlCommand.CommandText =
        "select * from " + tableName; //I even tried with qualifying table name like:
        // "select * from douglas." + tableName; where the douglas. is the account i.e.
        // the table owner I think.
        OdbcDataReader sqlReader = sqlCommand.ExecuteReader();
        int fieldCount = sqlReader.FieldCount;
        MessageBox.Show("Field Count: " + fieldCount);
    }
但它不起作用,因为出于某种原因,它不喜欢我的select*语句。它只是给出了上述错误。Transoft USQL真的是另一种野兽吗

到目前为止,其他的一切(再次感谢我上一篇得到答案的帖子)都非常有效

以下是我的连接字符串(根据注释):

    private void Form1_Load(object sender, EventArgs e)
    {
        txtDSNName.Text = "Company_Shared";
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        ConnectToData(txtDSNName.Text);
    }
    public void ConnectToData(String dsn)
    {

         conn=   new System.Data.Odbc.OdbcConnection();

        //conn.ConnectionString = "FIL=MS Access;DSN=" + dsn;
        conn.ConnectionString = "DSN=" + dsn; //dsn equals "Company_Shared"
        try
        {
            conn.Open();
            MessageBox.Show("Connected!");

尝试使用这样一个简单的构造来构建必要的ODBC commad和connection对象。这是我刚刚测试的一个简单插入的示例

        OdbcConnection odbcConn = new OdbcConnection(odbcConnString);//your odbc conn String
        odbcConn.Open();
        OdbcTransaction odbcTransStockList;//if you want to use transaction
        using (OdbcCommand odbcmdSelect = new OdbcCommand(strInsertStringAccess, odbcConn))//or if you are using SQL Server I am assuming it's Access
        {
            odbcmdInsert.CommandTimeout = 60;
            odbcTransStockList = odbcConn.BeginTransaction();
            odbcmdInsert.Transaction = odbcTransStockList;
            odbcmdInsert.CommandType = System.Data.CommandType.Text;
            try
            {
                odbcmdInsert.ExecuteNonQuery();
                odbcTransStockList.Commit();
            }
            catch (OdbcException odbcEx)
            {
                Console.WriteLine(odbcEx.Message);

            }
        }
        ((IDisposable)odbcTransStockList).Dispose();
        ((IDisposable)odbcConn).Dispose();
    }
    catch (OdbcException odbcEx)
    {
        Console.WriteLine(odbcEx.Message);
    }

当您从数据库管理工具运行
SELECT*FROM APPT
时会发生什么情况?我正在远程登录客户端计算机以尝试执行此操作,但他们没有管理工具。这是一个医生办公室,他想让我从他的数据库中获取他的数据,这是一件很麻烦的事。那么,是否有一个免费下载的查询数据库管理工具,它不需要管理员权限就可以安装?在windows的ODBC设置中,我是否可以看到它?我不确定,我甚至没有远程参与设置数据库或使用它的系统。可能是基于它要使用的驱动程序。我想我发现(很久以后是的,我很慢)这个问题与以下事实有关:数据库依赖于它无法始终找到的其他正在设置的数据源。我怀疑这至少是个问题,但我不是100%确定。我现在知道它是一个连接到数据源的transsoft数据库,其字典id由.uDD定义,它是一个平面文件数据库,与cobol或其他东西有一些绑定?他们的transoft驱动程序似乎是一个odbc连接……尽管在一些表上,我确实看到在尝试从中选择*时“未找到文件”。