Transoft ODBC sqlReader error: File does not exsist: TableNa

本文关键字:not exsist TableNa does File sqlReader error Transoft ODBC | 更新日期: 2023-09-27 18:19:07

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

OdbcConnection.GetSchema("TABLES";不工作

找到答案后,我可以显示所有的表名。现在我发现,读那些表格还是不行。出现错误:

Failed to connect to data source: ERROR [HY000][Transoft][TSODBC][usqlsd](log: 5852-142748) File does not exist: 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 *语句。它只是给出了上面所述的错误。transsoft 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!");

Transoft ODBC sqlReader error: File does not exsist: TableNa

尝试使用像这样的简单结构来构建必要的ODBC命令和连接对象。下面是我刚刚测试的一个简单Insert

示例
        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);
    }