我目前正在编写一个简单的程序来获取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'方法关闭连接。哪一行代码出错? –