数据库连接成功,却无法打开
错误发生在以下代码的
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环境把