各位高手,我碰到了一个奇怪的问题:
在WIN7环境下,在WINFORM界面上一旦使用EXCEL Interop 操作EXCEL后,在后台线程里就连接不上SQL SERVER 2005了。如果不操作EXCEL Interop,则一点问题也没有。
不知道各位有没有碰到过,谢谢!
在WIN7环境下,在WINFORM界面上一旦使用EXCEL Interop 操作EXCEL后,在后台线程里就连接不上SQL SERVER 2005了。如果不操作EXCEL Interop,则一点问题也没有。
不知道各位有没有碰到过,谢谢!
.net 2.0
Microsoft.Office.Interop.Excel 11
在 AlarmsViewer.Form1.SelectData(SqlConnection connection_data)
在 AlarmsViewer.Form1.GetDataFromDB()
在 AlarmsViewer.Form1.Search_sqldata()
Error:2011/9/1 20:52:08--------------在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接): 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 AlarmsViewer.Form1.GetDataFromDB()
在 AlarmsViewer.Form1.Search_sqldata()
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 AlarmsViewer.Form1.GetDataFromDB()
在 AlarmsViewer.Form1.Search_sqldata()
这个错一般是数据库没有打开才会爆的错啊
{
InitializeComponent(); MyLog.Create(AppHelper.GetFullPath("alarmlogs.log")); if (!init())
this.Close();
inittimer(); thread1 = new Thread(new ThreadStart(Search_sqldata)); thread1.Start(); MyLog.Write(LogLevelType.Info, "线程启动");
}
public void Search_sqldata()
{
while (true)
{
mut.WaitOne();
try
{ GetDataFromDB();
dberror = false;
}
catch (Exception e)
{
MyLog.Write(LogLevelType.Error, e.Message + ":" + e.StackTrace);
dberror = true; }
mut.ReleaseMutex();
if (autoEvent.WaitOne(1000, true))
{
MyLog.Write(LogLevelType.Info, "event signaled");
autoEvent1.Set();
return; }
else
{
//MyLog.Write(LogLevelType.Info, "event timeout");
}
Thread.Sleep(int.Parse(Config.GetTime()) * 1000);
}
}
private void GetDataFromDB()
{
SqlConnection conn = null;
conn = new SqlConnection(connstring);
conn.Open(); SelectData(conn); conn.Close();
}
SqlConnection conn = null;
conn = new SqlConnection(connstring);
conn.Open(); SelectData(conn); conn.Close();
你贴出来的代码我就没看见connstring赋值了;
LZ你可以这样写
SqlConnection conn =new SqlConnection("连接数据库");