我做了一个项目来测试使用与 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 数据库的最佳(最可靠和最佳性能)方式是什么?
非常感谢!!