使用Gupta.Sql.Base.dll和一些与连接相关的问题SQLBase901设置我的连接时的查询错误

如何解决使用Gupta.Sql.Base.dll和一些与连接相关的问题SQLBase901设置我的连接时的查询错误

我创建了一个项目,以使用与Gupta.sql.Base.dll(版本9.0.1.13768)的连接进行测试,我们使用版本sqlbase901(即sqlbase文件夹)。我添加了Gupta.sql.Base.dll作为项目引用,但是执行在行中毫无例外地结束了:

sqlbaseDataReader  reader = command.ExecuteReader(); //Error here that closes the App with no Exception

该应用程序仅会关闭,不会引发任何异常。这是代码

    private void button1_Click_1(object sender,EventArgs e)
    {
        string connectionString =  "data source=storage; uid=sysadm;ini=c:\\sqlbase901\\sql.ini";
        string queryString = "SELECT * FROM LAPOS_TRANSACCION";
        int paramValue = 145;

        using (sqlbaseConnection connection = new sqlbaseConnection(connectionString))
        {
            sqlbaseCommand command = new sqlbaseCommand(queryString,connection);
            command.Parameters.Add("@cod_farmacia",paramValue);
            try
            {
                connection.open();
                sqlbaseDataReader reader = command.ExecuteReader(); //Error here that closes the App with no Exception
                while (reader.Read())
                {
                    Console.WriteLine("\t{0}\t{1}\t{2}",reader[0],reader[1],reader[2]);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }

    }

报告显示文件ntdll.dll中引发错误

-------Error
Nombre de la aplicación con errores: PruebaConexionsqlbase.vshost.exe,versión: 14.0.23107.0,marca de tiempo: 0x559b788a
Nombre del módulo con errores: ntdll.dll,versión: 10.0.18362.1049,marca de tiempo: 0x37fd3042
Código de excepción: 0xc0000374
Desplazamiento de errores: 0x000dfa1d
Identificador del proceso con errores: 0x3bb8
Hora de inicio de la aplicación con errores: 0x01d68c2c8f4b0e27
Ruta de acceso de la aplicación con errores: C:\Prueba\PruebaConexionsqlbase\PruebaConexionsqlbase\bin\Debug\PruebaConexionsqlbase.vshost.exe
Ruta de acceso del módulo con errores: C:\Windows\SYstem32\ntdll.dll
Identificador del informe: 478cec12-bee4-4dfe-9465-f9cc2deea3d6
Nombre completo del paquete con errores: 
Identificador de aplicación relativa del paquete con errores: 

编辑:具有不同代码,相同结果的另一个示例,在这种情况下,应用程序在执行以下行时关闭:Adapter.Fill(ds,“ EMPLOYEE”);

//' Setup the sqlbase connection string
sqlbaseConnection conn = new sqlbaseConnection();
conn.ConnectionString = "data source=storage; uid=sysadm;ini=c:\\sqlbase901\\sql.ini";

//' Open a connection to sqlbase
conn.open();

sqlbaseDataAdapter Adapter = new sqlbaseDataAdapter();

sqlbaseCommand cmd = new sqlbaseCommand();
cmd.CommandText = "SELECT * FROM OPERACION_MENSAJE";
cmd.Connection = conn;

Adapter.SelectCommand = cmd;

// Create a new DataSet
DataSet ds = new DataSet();

Adapter.Fill(ds,"OPERACION");

// Close the database connection
conn.Close();

我要测试此连接方法的原因是,在某些情况下,我使用OLEDB(我使用的当前连接方法)以及ODBC遇到了问题:

ODBC :几个小时后,连接器使用了PC上可用的内存,没有释放它。

OleDB :在某些情况下,我们存在并发问题,遇到这些问题的应用程序是用Delphi编写的,当出现问题时很难重现该问题,但是在某些情况下,查询表之后保持锁定状态,其他客户端计算机在发送查询时将无法得到答案。

您认为连接到sqlbase数据库的最佳方式(最可靠和最佳性能)是什么?

非常感谢您!

解决方法

您在问:

连接到SqlBase数据库的最佳方法(最可靠和最佳性能)。

但是您指的是SQLBase v9,它是A-n-c-i-e-n-t ...... SQLBase现在是 v12.3 64bit ,并且比v9提前了几年。因此很难回答您的问题。如果您正在运行v12.nn(应该至少是v11.7),那么无疑OLEDB是最快,最简单和最可靠的连接方法。并发不是问题。忘记ODBC-它只是一个瓶颈。 SQLBase v12 OLEDB上有300个用户-没问题。但是v9 OLEDB太老了-与“ Delphi”结合使用的对“ ntdll.dll”的引用将其归类为“祝​​你好运”。

我最好的建议是在浪费太多时间在v9 OLEDB上之前,将数据库升级到正确支持的现代版本。抱歉,我不能提供更多帮助-也许其他人有v9 OLEDB的经验。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?