none
使用C#开发的应用程序,电脑重启后,第一次启动应用程序访问数据库,SqlConnection.Open()报错,之后,再启动就不报错了。 RRS feed

  • 问题

  • 使用C#开发的应用程序,电脑重启后(不管是重启后1个分钟,还是重启后3个小时),第一次启动应用程序访问数据库(数据库是SQLEXPRESS),SqlConnection.Open()报错;退出后,再启动程序就不报错了,可以从数据库正常获取数据。请大虾们帮助分析下问题的原因和解决办法,非常感谢。

    • 调用的代码

    在窗体加载时会调用方法GetAccountInfoList()

    public string ConnectionString
            {
                get
                {
                    string path = Path.Combine(Environment.CurrentDirectory, @"Data\DataBase1.mdf");
                    //string path = Environment.CurrentDirectory + @"\..\..\DataBase\DataBase1.mdf";
                    return string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;User Instance=True", path);
                }
            }
    
    
            public List<AccountInfo> GetAccountInfoList()
            {          
                DataSet ds = new DataSet();
                using (SqlConnection connection = new SqlConnection(this.ConnectionString))
                {                         
                    string sql = String.Format("SELECT * FROM AccountInfoTab ORDER BY [Order] ASC");
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = new SqlCommand(sql, connection);
                    //下面这行出错,请看错误堆栈信息
                    adapter.Fill(ds);
                }
    
                List<AccountInfo> accountInfoList = new List<AccountInfo>();
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    //..................
                }
    
                return accountInfoList;
            }
    


     

    • 错误截图和信息

    有关调用实时(JIT)调试而不是此对话框的详细信息,
    请参见此消息的结尾。

    ************** 异常文本 **************
    System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
       在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       在 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
       在 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
       在 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
       在 System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
       在 System.Data.SqlClient.TdsParserStateObject.ReadByte()
       在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
       在 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()
       在 System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
       在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
       在 WinFormOneKeyPass.OneKeyPassManager.GetAccountInfoList() 位置 E:\Source\workspace vs2008\WinFormOneKeyPass\WinFormOneKeyPass\Manager\OneKeyPassManager.cs:行号 68
       在 WinFormOneKeyPass.FrmMain.LoadAccountInfoTabPage() 位置 E:\Source\workspace vs2008\WinFormOneKeyPass\WinFormOneKeyPass\FrmMain.cs:行号 187
       在 WinFormOneKeyPass.FrmMain.FrmMain_Load(Object sender, EventArgs e) 位置 E:\Source\workspace vs2008\WinFormOneKeyPass\WinFormOneKeyPass\FrmMain.cs:行号 144
       在 System.Windows.Forms.Form.OnLoad(EventArgs e)
       在 System.Windows.Forms.Form.OnCreateControl()
       在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       在 System.Windows.Forms.Control.CreateControl()
       在 System.Windows.Forms.Control.WmShowWindow(Message& m)
       在 System.Windows.Forms.Control.WndProc(Message& m)
       在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
       在 System.Windows.Forms.Form.WmShowWindow(Message& m)
       在 System.Windows.Forms.Form.WndProc(Message& m)
       在 DevExpress.XtraEditors.XtraForm.WndProc(Message& msg)
       在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** 已加载的程序集 **************
    mscorlib
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.4952 (win7RTMGDR.050727-4900)
        基本代码: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    WinFormOneKeyPass
        程序集版本: 1.0.0.0
        Win32 版本: 1.0.0.0
        基本代码: file:///E:/Source/workspace%20vs2008/WinFormOneKeyPass/WinFormOneKeyPass/bin/Debug/WinFormOneKeyPass.exe
    ----------------------------------------
    System.Windows.Forms
        程序集版本: 2.0.0.0
        Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
        基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------

    .......................

    


    • 已编辑 CountaMa 2011年11月19日 10:49 将关键错误信息加粗显示
    2011年11月19日 10:45

答案

全部回复