我在asp.net中编写代码。我在数据库中有一个名为c_name的列。我想将所有列值存储在一个数组中。这是我不完整的代码。我很困惑这里要做什么。
String str = "select c_name from contacts where user_id = " + user_id + "";
MySqlCommand cmd = new MySqlCommand(str, dbConnection);
cmd.ExecuteNonQuery();
MySqlDataReader mdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (mdr.Read())
{
}
请帮忙。
答案 0 :(得分:1)
检查以下代码:
String str = "select c_name from contacts where user_id = " + user_id + "";
MySqlCommand cmd = new MySqlCommand(str, dbConnection);
MySqlDataReader mdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<string> list = new List<string>();
while (mdr.Read())
{
list.Add(mdr.GetString(0));
}
string[] strMyArray = list.ToArray<string>();
答案 1 :(得分:0)
我怀疑你的一个问题是这一行:
cmd.ExecuteNonQuery();
您实际执行cmd两次,一次使用此行,再次创建阅读器时再次执行cmd。我还添加了一些代码来将结果复制到列表中的元素中。请尝试以下方法:
string str = "select c_name from contacts where user_id = " + user_id + "";
MySqlCommand cmd = new MySqlCommand(str, dbConnection);
MySqlDataReader mdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// create a list to hold the results in
List<string> results = new List<string>();
while (mdr.Read())
{
// for each row read a string and add it in
results.Add(mdr.GetString(0));
}
您已经要求使用数组 - 我已经使用了一个列表,因为它更容易。如果您真的想要一个数组,那么只需调用:
var theArray = results.ToArray();
我还建议在连接,命令和阅读器周围使用一些块。