
[英]Oracle database returns faulty rows from stored procedure using devart in C#
[英]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.