我的應用程序拋出數據庫連接丟失錯誤。每隔一段時間連接數據庫就會丟失錯誤
我從一個教程網站得到的數據庫類,在下面,它有效,除了有時會出現上述錯誤,即時猜測它的超時,就好像使用它的人去冒煙並返回並嘗試繼續他們離開的地方。
而粗俗正常的最終用戶他們關閉然後錯誤信息那麼來讓我告訴我他們得到了一個錯誤。
但直到錯誤再次出現了,我想我會問可以改變一下這個代碼的一部分,以防止錯誤
這是火鳥數據庫服務器和C#應用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using FirebirdSql.Data.FirebirdClient;
namespace _0912111
{
class DatabaseConnection
{
private FbConnection conn;
private FbCommand sqlCommand;
private FbDataAdapter DB;
private DataSet DS = new DataSet();
public DatabaseConnection()
{
conn = new FbConnection("User=myuser;" + "Password=mypw;" + "Database=dbpath;" + "DataSource=serverip;" + "Port=dbport;" + "Dialect=3;" + "Charset=UTF8;");
}
public void showDbError(string theError)
{
MessageBox.Show("Could not connect to database\n\nError Details:\n" + theError);
}
public FbConnection Openconn()
{
if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken)
{
try
{
conn.Open();
}
catch (Exception e)
{
showDbError(e.Message.ToString());
}
}
return conn;
}
public FbConnection Closeconn()
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return conn;
}
public void nonQuery(string txtQuery)
{
FbCommand cmd = new FbCommand(txtQuery);
try
{
cmd.Connection = Openconn();
cmd.ExecuteNonQuery();
}
catch (Exception Ex)
{
showDbError(Ex.Message.ToString());
throw Ex;
}
finally
{
cmd = null;
}
}
public FbDataReader returnDataReader(string txtQuery)
{
FbCommand cmd = new FbCommand();
try
{
cmd.Connection = Openconn();
cmd.CommandText = txtQuery;
FbDataReader rd;
rd = cmd.ExecuteReader();
return rd;
}
catch (Exception Ex)
{
showDbError(Ex.Message.ToString());
throw Ex;
}
finally
{
cmd = null;
}
}
}
}
我會認爲她的代碼,說
if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) {
將阻止它?
只是檢查之前,如果conn!= null –
@SenadMeškin如果conn == null我會只使用conn.Open()還是我不得不回憶一個像DatabaseConnection()一樣的新FbConnection()呢? – thegaffney
您也可以在代碼中添加一些日誌記錄(對某個文件或其他任何地方),這樣即使用戶關閉對話框,也可以始終得到任何異常。 – scottm