2

我有一个来自 firebird 1.5 的数据库,扩展名为 .CDB

我需要从此数据库中检索数据(SELECT)。我设法打开了与数据库的连接,这是我使用的连接字符串:

<add name="FirebirdConnectionString" 
connectionString="User=SYSDBA;Password=masterkey;Database=localhost:C:\temp\BD\ECLECTIC.CDB;
DataSource=localhost;Port=3051;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;              Pooling=false; MinPoolSize=0;MaxPoolSize=50;          
Packet Size=8192; ServerType=1;" 
providerName="FirebirdSql.Data.FirebirdClient"/>

这是我的 DatabaseConnection.cs 类

private readonly String _connString = ConfigurationManager.ConnectionStrings["FirebirdConnectionString"].ToString();

public void Dispose()
{
    GC.SuppressFinalize(this);
    GC.Collect();
}

public FbConnection OpenConn()
{
    FbConnection conn = new FbConnection(_connString);
    if(conn.State != System.Data.ConnectionState.Open)
        conn.Open();
    return conn;
}

public FbConnection CloseConn(FbConnection conn)
{
    if(conn.State != System.Data.ConnectionState.Closed)
        conn.Close();
    return conn;
}

public FbCommand CreateCommand(String query)
{
    var conn1 = OpenConn();
    var commandQuery = new FbCommand(query, conn1);
    return commandQuery;
}

这是我尝试检索数据的地方:

var dbConnection = new DbConnection();
var conn = dbConnection.OpenConn();

var cmd = new FbCommand();
cmd.CommandText = "SELECT COD_MOD, E" +
                  "CF_MOD FROM E_SPED_C405";
cmd.Connection = conn;


using(var dr = cmd.ExecuteReader())
{
    var list1= new List<string>();

-->>       while(dr.Read()) //Here i get the exception NullReference
    {
        list1.Add(dr["COD_MOD"].ToString());
    }
}

这是堆栈跟踪

em FirebirdSql.Data.Common.DbValue.GetString()
em FirebirdSql.Data.Embedded.XsqldaMarshaler.GetBytes(DbField field)
em FirebirdSql.Data.Embedded.XsqldaMarshaler.MarshalManagedToNative(Charset charset, Descriptor descriptor)
em FirebirdSql.Data.Embedded.FesStatement.Fetch()
em FirebirdSql.Data.Firebird.FbCommand.Fetch()
em FirebirdSql.Data.Firebird.FbDataReader.Read()
em IntegraEstoklus._Default.Page_Load(Object sender, EventArgs e) on    c:\Users\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\Default.aspx.cs:linha 30
em System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
em System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
em System.Web.UI.Control.OnLoad(EventArgs e)
em System.Web.UI.Control.LoadRecursive()
em System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

环境.Stacktrace

em System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
em System.Environment.get_StackTrace()
em FirebirdSql.Data.Common.DbValue.GetString()
em FirebirdSql.Data.Embedded.XsqldaMarshaler.GetBytes(DbField field)
em FirebirdSql.Data.Embedded.XsqldaMarshaler.MarshalManagedToNative(Charset charset, Descriptor descriptor)
em FirebirdSql.Data.Embedded.FesStatement.Fetch()
em FirebirdSql.Data.Firebird.FbCommand.Fetch()
em FirebirdSql.Data.Firebird.FbDataReader.Read()
em IntegraEstoklus._Default.Page_Load(Object sender, EventArgs e) na c:\Users\Gabriel\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\Default.aspx.cs:linha 34
em System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
em System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
em System.Web.UI.Control.OnLoad(EventArgs e)
em System.Web.UI.Control.LoadRecursive()
em System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
em System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
em System.Web.UI.Page.ProcessRequest()
em System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
em System.Web.UI.Page.ProcessRequest(HttpContext context)
em ASP.default_aspx.ProcessRequest(HttpContext context) na c:\Users\Gabriel\AppData\Local\Temp\Temporary ASP.NET Files\root\fa427f85\c637233d\App_Web_dd0adkex.0.cs:linha 0
em System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
em System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
em System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)
em System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
em System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
em System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)
em System.Web.HttpRuntime.ProcessRequest(HttpWorkerRequest wr)
em Microsoft.VisualStudio.WebHost.Request.Process()
em Microsoft.VisualStudio.WebHost.Host.ProcessRequest(Connection conn)
4

0 回答 0