Transoft ODBC sqlReader ошибка: файл не существует: TableName - PullRequest
0 голосов
/ 02 января 2012

У меня вопрос о подключении и получении имен таблиц из DSN, который, очевидно, является драйвером Transoft.Этот вопрос здесь:

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 *.Это просто дает ошибку, указанную выше.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!");

1 Ответ

0 голосов
/ 03 января 2012

Попробуйте использовать простую конструкцию, подобную этой, для создания необходимых вам ODBC-запятых и объектов подключения. Вот пример, который я только что протестировал для простой вставки

        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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...