我想阅读(该列表中的所有数据),但我不知道如何在C#中执行此操作
//Create a list to store the result
List<string>[] list = new List<string>[2];
list[0] = new List<string>();
list[1] = new List<string>();
//Open connection
if (mysql.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, mysql.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["filename"] + "");
list[1].Add(dataReader["hash"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
mysql.CloseConnection();
//return list to be displayed
return list;
}
如果有人可以告诉它可以从该mysql选择中创建数组,例如2 index {“filename”,“hash”}。在PHP中我只能做$ array [“filename”] = FILENAME;等
我想在foreach循环中将该数据读作dataReader["filename"]
。
答案 0 :(得分:2)
您可以创建单个集合,例如创建单个集合,而不是创建多个列表并尝试按索引同步数组。 List<Tuple<string, string>>
或List<SomeEntity>
来模拟行的所有字段,其中SomeEntity
是一个简单的POCO类,用于对查询中的一行数据进行建模。
e.g。创建一个新的POCO类来为行建模:
public class FileNameHash
{
public string FileName {get; set;}
public string Hash {get; set;}
// Other fields in your query here
}
...并修改您的提取代码
//Create a list to store the result
var list = new List<FileNameHash>();
using (var mysql = new MySqlConnection(connectionString))
using (var cmd = new MySqlCommand(query, mysql.connection))
using (var dataReader = cmd.ExecuteReader())
{
if (mysql.OpenConnection() == true)
{
//Read the data and store them in the list
while (dataReader.Read())
{
list.Add(new FileNameHash
{
FileName = (string)dataReader["filename"],
Hash = (string)dataReader["hash"]
// .. Other fields here
});
}
return list;
}
}
其他:
IDisposable
Connection
,Command
和DataReader
包裹在一个使用中,可以避免忘记关闭/处置所有路径中的资源,包括异常。 答案 1 :(得分:0)
我不确定我是否接受了您的问题,但我认为您非常接近:您可以使用以下方式预告您的文件名:
foreach(string filename in list[0])
你可以使用:
迭代你的哈希值foreach(string hash in list[1])
您可以通过不将这两个列表放在数组中来简化代码,即只使用:
List<string> filenames = new List<string>();
List<string> hashes = new List<string>();
答案 2 :(得分:0)
首先创建模型类:
Public class FileAndHashCode
{
public string name {get;set}
public string hashCode{get;set}
}
然后创建一个方法:
Public List<FileAndHashCode> getFileAndhashcode()
{
\\...
List<FileAndHashCode> temp=new List<FileAndHashCode>();
while (dataReader.Read())
{
temp.add(new
FileAndHashCode{name=dataReader["fileName"].ToString()+" " , hashCode=dataReader["hash"].ToString()+" "});
}
return temp;
}