教程的这一部分:
public List< string >[] Select()
{
string query = "SELECT * FROM tableinfo";
//Create a list to store the result
List< string >[] list = new List< string >[3];
list[0] = new List< string >();
list[1] = new List< string >();
list[2] = new List< string >();
//Open connection
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["id"] + "");
list[1].Add(dataReader["name"] + "");
list[2].Add(dataReader["age"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
//return list to be displayed
return list;
}
else
{
return list;
}
}
是你指的,我想。这不是存储结果的好方法,而且启动时编写得相当糟糕。你可以很容易地做到:
public List<object[]> Select() {
string query = "SELECT * FROM tableinfo";
// Create a list to store the result
var result = new List<object[]>();
// Open connection
if (this.OpenConnection()) {
// Create Command
var cmd = new MySqlCommand(query, connection);
// Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
// Read the data and store them in the list
while(dataReader.Read()) {
object[] items = new object[dataReader.FieldCount];
dataReader.GetValues(items);
result.Add(items);
}
// Close Data Reader
dataReader.Close();
// Close Connection
this.CloseConnection();
// Return list to be displayed
return list;
} else {
// This is a bad thing.
throw new ApplicationException("Could not connect to database.");
}
}
如果我正确地记得数据库访问,这就是你应该这样做的方式:
public DataSet Select() {
if(!this.OpenConnection()) {
throw new ApplicationException("Could not connect to database.");
}
using(var query = new MySqlDataAdapter("SELECT * FROM tableinfo", this.connection)) {
var data = new DataSet();
query.Fill(data);
return data;
}
}