我目前正在編寫一個簡單的程序來獲取4個表。我可以單獨獲取數據,但不能按順序獲取數據。c#連接在獲取多個表時必須有效且打開
DBConnection的代碼:在使用本方法的
/*
* Created by SharpDevelop.
* Date: 13.04.2017
* Time: 10:29
*/
using System;
using MySql.Data.MySqlClient;
namespace TWReporting.Database
{
public class DBConnection
{
private DBConnection()
{
}
private string databaseName = "**********";
private string username = "**********";
private string password = "**********";
public string DatabaseName {
get { return databaseName; }
set { databaseName = value; }
}
public string Password {
get { return password; }
set { password = value; }
}
public string Username {
get { return username; }
set { username = value; }
}
private MySqlConnection connection = null;
public MySqlConnection Connection {
get { return connection; }
}
private static DBConnection _instance = null;
public static DBConnection Instance()
{
if (_instance == null)
_instance = new DBConnection();
return _instance;
}
public bool IsConnect()
{
bool result = true;
if (Connection == null) {
if (String.IsNullOrEmpty(databaseName))
result = false;
string connstring = string.Format("Server=localhost; database={0}; UID={1}; password={2}", databaseName, Username, Password);
connection = new MySqlConnection(connstring);
connection.Open();
result = true;
}
return result;
}
public void Close()
{
connection.Close();
}
}
}
實施例:
public class DataFetcher
{
public List<TestSessionDut> duts;
public List<TestSession> testSessions;
public List<TestScriptRun> testScriptRuns;
public List<Engine> engines;
public DataFetcher()
{
duts = new List<TestSessionDut>();
testSessions = new List<TestSession>();
testScriptRuns = new List<TestScriptRun>();
engines = new List<Engine>();
FetchData();
}
public void FetchData()
{
FetchDuts();
FetchEngines();
FetchTestScriptRuns();
FetchTestSessions();
}
public void FetchDuts()
{
var dbCon = DBConnection.Instance();
try
{
if (dbCon.IsConnect())
{
const string query = "SELECT * FROM table";
var cmd = new MySqlCommand(query, dbCon.Connection);
var reader = cmd.ExecuteReader();
while(reader.Read())
{
var tsd = new TestSessionDut();
tsd.ID = reader.GetInt32(0);
tsd.Dut = reader.GetString(1);
this.duts.Add(tsd);
}
}
}
catch(Exception e)
{
Console.WriteLine("Fetch duts");
Console.WriteLine(e.Message);
}
finally
{
dbCon.Close();
}
}
我請4層的方法,如這些,但所有從一個單獨的表。我可以從所有表中分別檢索數據,但是當我一起調用這些方法時,它會給出這個消息。
在此先感謝。
因爲您正在使用'FetchDuts'方法關閉連接。哪一行代碼出錯? –