繁体   English   中英

在C#中成功与Devart连接后,数据库返回null

[英]Database returns null after successful connection with Devart in C#

我正在尝试将C#连接到InterBase数据库。 我已经下载并安装了Windows版Devart ODBC驱动程序并安装了它。 我在控制面板中配置了系统DSN,并在测试连接时收到成功消息。 我在配置用于建立与InterBase数据库的连接的驱动程序的过程中生成了连接字符串。 我已经设法用C#和PHP连接到数据库,但是如果尝试查询数据库,则会出现错误。 如果显示连接信息,数据库名称将返回空值,并且我怀疑这是问题所在,但我不知道如何解决。

这是我的Devart ODBC配置的链接 我在C#中的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using System.Data.SqlClient;

namespace ConsoleApp2 {
    class Program {
        static void Main(string[] args) {

            string connString = "DRIVER=Devart ODBC Driver for InterBase;Description=testing;Data Source=127.0.0.1;Database=C:\\Program Files\\Embarcadero\\Databases\\TEST.GDB;Port=3051;User ID=sysdba;Password=masterkey";
            OdbcConnection conn = new OdbcConnection(connString);

            try {
                conn.Open();
                Console.WriteLine("Connection Information:\t");
                Console.WriteLine("\nConnection String:\t" +
                                  conn.ConnectionString);
                Console.WriteLine("\nConnection Timeout:\t" +
                                  conn.ConnectionTimeout);
                Console.WriteLine("\nDatabase:\t" +
                                  conn.Database);
                Console.WriteLine("\nDataSource:\t" +
                                  conn.DataSource);
                Console.WriteLine("\nDriver:\t" +
                                  conn.Driver);
                Console.WriteLine("\nServerVersion:\t" +
                                  conn.ServerVersion);
            }
            catch (OdbcException ex){
                Console.WriteLine(ex);
            }

        Console.ReadLine();
        }
}
}

上面的代码给了我这个输出。

如果我尝试在数据库的“ USER”表上执行SELECT查询,这是我得到的错误:

USERn未知-第1行,字符15(0x80131937):ERROR [HY000] [Devart] [ODBC] [InterBase] System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)处的动态SQL错误。 Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior行为,字符串方法,布尔型NeedReader,Object [] methodArguments,SQL.API odbcApiMethod),位于System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior行为,字符串方法,布尔型NeedReader),位于System.Data.Odbc。 D:\\ C#\\ ConsoleApp2 \\ ConsoleApp2 \\ Program.cs:第38行中的ConsoleApp2.Program.Main(String [] args)处的System.Data.Odbc.OdbcCommand.ExecuteReader()处的OdbcCommand.ExecuteReader(CommandBehavior行为)

但是,如果我输入数据库中不存在的表名,例如USR,这就是我得到的:

USRle unknowne = -204Exception(0x80131937):错误[HY000] [Devart] [ODBC] [InterBase] System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)处的System.Data.Odbc.OdbcCommandDynamic SQL错误.ExecuteReaderObject(CommandBehavior行为,String方法,布尔型NeedReader,Object [] methodArguments,SQL_API odbcApiMethod),位于System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior行为,字符串方法,布尔型NeedReader),位于System.Data.Odbc.OdbcCommand.ExecuteReader D:\\ C#\\ ConsoleApp2 \\ ConsoleApp2 \\ Program.cs:第38行的ConsoleApp2.Program.Main(String [] args)处的System.Data.Odbc.OdbcCommand.ExecuteReader()(CommandBehavior行为)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM