首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

数据库连接成功,却无法打开,该如何解决

2012-01-30 
数据库连接成功,却无法打开错误发生在以下代码的this.objSQLMainFrameConn.Open()中,objSQLMainFrameConn

数据库连接成功,却无法打开
错误发生在以下代码的
            this.objSQLMainFrameConn.Open();
中,objSQLMainFrameConn是一个sql   server数据库的连接对象,在.Open之前已经实例化了,而且连接测试没有问题,程序前一段时间也运行平稳,但是突然一天这行代码总是报告错误,下面是log文件的错误记录。   我单步运行程序,发现在执行Open之前objSQLMainFrameConn对象是存在并有效初始化的。

[2007-7-21   12:43:16]   -   未将对象引用设置到对象的实例。
[2007-7-21   12:46:43]   -   未将对象引用设置到对象的实例。
[2007-7-21   12:49:46]   -   未将对象引用设置到对象的实例。

try
{
          string     AppPath   =   Application.StartupPath;
          ObjAppConfig   =   new   CInit( "..\\..\\MainFrameConfig.xml ");

          if   (ObjAppConfig.ErrMsg   !=   null)
          {
                    MessageBox.Show(ObjAppConfig.ErrMsg,  
                    "初始化错误   -   发生在读取配置文件 ",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                    Application.Exit();
                    return;
            }

            if   (!CLog.Initialize())
            {
                    MessageBox.Show(strRunTimeErrMsg,  
                    "初始化错误   -   发生在初始化日志文件 ",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                    Application.Exit();
                    return;
            }
 
            this.objSQLMainFrameConn.Open();
            string   args   = " ";
            args   +=   ObjAppConfig.ReadValue( "sgpro_NS_output ")   +   "   ";
            args   +=   ObjAppConfig.ReadValue( "sgpro_Interp_output ")   +   "   ";
            this.ObjWebObjectGen   =   new   CRemoteWebObjectGen(args);
            this.txtHTMLCode.Text   =   " ";
}

catch   (Exception   ex)
{
            strRunTimeErrMsg   =   ex.Message;
            MessageBox.Show( "Error:\n "   +   ex.Message,  
            this.Name,
            MessageBoxButtons.OK,  
            MessageBoxIcon.Stop);
            CLog.WriteLog(ex.Message);
            Application.Exit();
            return;


}

长期无法解决,让我想起之前无法调试的问题,手工注册一下mscordbi.dll即使用   regsvr32   mscordbi.dll命令,   果然有效,不再报告这样的错误了。   但是后来这招也失灵了,现在无论如何也无法打开数据库,我深信不疑是机器环境的问题,打算到朋友这里重筑.net环境,但是如果本机能解决尽量解决,请各位高手不吝赐教。

Stack   Trace:
      at   LoadLibraryW(UInt16*   )
      at   System.EnterpriseServices.Thunk.Security.Init()
      at   System.EnterpriseServices.Thunk.Security.SuspendImpersonation()
      at   System.EnterpriseServices.Platform.Initialize()
      at   System.EnterpriseServices.Platform.get_W2K()
      at   System.EnterpriseServices.ResourcePool..ctor(TransactionEndDelegate   cb)
      at   System.Data.SqlClient.ConnectionPool.CreateResourcePool()
      at   System.Data.SqlClient.ConnectionPool..ctor(DefaultPoolControl   ctrl)
      at   System.Data.SqlClient.PoolManager.FindOrCreatePool(DefaultPoolControl   ctrl,   IntPtr   SID)
      at   System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString   options,   Boolean&   isInTransaction)
      at   System.Data.SqlClient.SqlConnection.Open()
      at   sgpro_csnet_websearch_dba.sgpro_BlogSearch_MainFrame.Form1_Load(Object   sender,   EventArgs   e)


[解决办法]
把try之前对objSQLMainFrameConn的声明加上:objSQLMainFrameConn=null;
再试试应该就可以了
[解决办法]
objSQLMainFrameConn的声明加上:objSQLMainFrameConn=null;

[解决办法]
代码太多拉.............
看不清啊
[解决办法]
你在try{} catch(){} 里面没有声明objSQLMainFrameConn ,那么你有没有在同个方法内说明呢?或者有没有在同个类中声明呢?
[解决办法]
this.objSQLMainFrameConn.Open();
=====================================
你的数据库还没有连接,以上这句执行成功后才是真正连接到数据库。

建议你到 控制面板-管理工具-数据源(ODBC) 中看看。
[解决办法]
以前正常,现在不行可能测试时数据测试不全面造成的,当出现特定数据时会出现那样的错误,调试起来也不好找问题,最好看一下日志,查一下表数据。
[解决办法]
楼主分析够清楚了
调试弹出错误的时候用快速监视看objSQLMainFrameConn是已被初始化
就到朋友这里重筑.net环境把

热点排行