Oracle ODBC连接 - 无法运行查询

时间:2015-11-05 17:32:10

标签: c# oracle odbc

我正在开发一个C#应用程序,它将连接到本地数据源并从中提取数据。我遇到的问题是,如果我尝试运行查询,例如“SELECT SYSDATA FROM DUAL”,我会收到以下消息:

错误:捕获到OverflowException错误。
消息:算术运算导致溢出。

如果我尝试任何其他查询,我会收到相同的消息。

该程序是作为64位应用程序构建的 数据库本地存储在机器上 数据源使用的驱动程序是OraClient 11g_home2中的Oracle 驱动程序版本为11.02.00.01。

这是我的连接代码:

try {
        string connectionString =
            "DSN="+_dsn+
            ";DBQ="+_dbq+
            ";DBA=R"+
            ";Uid="+_uid+
            ";Pwd="+_pwd;

        using (_odbc_conn = new OdbcConnection(connectionString)) {

            Console.WriteLine("Establishing connection...");
            _odbc_conn.Open();
            Console.WriteLine("\nConnection successful!\n");

            Console.WriteLine("== Connection Status ==");
            Console.WriteLine("Connection String: " + _odbc_conn.ConnectionString);
            Console.WriteLine("Connection State: " + _odbc_conn.State);
            Console.WriteLine("Connection Timeout: " + _odbc_conn.ConnectionTimeout);
            Console.WriteLine("Database: " + _odbc_conn.Database.ToString());
            Console.WriteLine("Data Source: " + _odbc_conn.DataSource);
            Console.WriteLine("Driver: " + _odbc_conn.Driver);
            Console.WriteLine("Server Version: " + _odbc_conn.ServerVersion);
            Console.WriteLine("Schema: " + _odbc_conn.GetSchema() + "\n");

            if (_odbc_conn.State == ConnectionState.Open) {
                Console.WriteLine("== Query Results ==");                   
                RunQuery();
            }
        }

    } catch(OdbcException e) {
        Console.WriteLine("Error: Failed to establish connection!");
        for (int i=0; i<e.Errors.Count; i++) {
            Console.WriteLine("Index #" + i + "\n" +
                "Message: " + e.Errors[i].Message + "\n" +
                "NativeError: " + e.Errors[i].NativeError.ToString() + "\n" +
                "Source: " + e.Errors[i].Source + "\n" +
                "SQL: " + e.Errors[i].SQLState + "\n");
        }
    }


如果有人可以帮忙解决这个问题,我会非常感激 谢谢!


编辑:我忘记了我的查询代码:

private void RunQuery() {
    try {
        _odbc_cmd = new OdbcCommand();
        _odbc_cmd.Connection = _odbc_conn;
        _odbc_cmd.CommandText = "SELECT SYSDATE FROM DUAL";
        _odbc_cmd.ExecuteNonQuery();
    } catch (OdbcException e) {
    ...

    _odbc_conn.Close();
}


编辑#2:语法改变没有成功。

_odbc_cmd = new OdbcCommand("SELECT SYSDATE FROM DUAL", _odbc_conn);
using (OdbcDataReader reader = _odbc_cmd.ExecuteReader()) {
    while (reader.Read()) {
        Console.WriteLine(reader.GetString(0));
    }
}

这导致与以前相同的算术错误。

0 个答案:

没有答案
相关问题