C#MySQL作为多行字符串

时间:2015-09-01 15:01:31

标签: c# mysql string

我正在尝试在c#

中查询多行mySQL(文本)到string []
cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT `items` FROM `queue` WHERE `status`='active'", conn); 
object[] que_items = cmd.ExecuteScalar();

项目给出(例如):

  

item1

     

第2项

     

项目3

没有用,因为它会出错。 有什么帮助吗?

因为每个人都希望看到错误:

  

无法将类型'object'隐式转换为'object []'。存在显式转换(您是否错过了演员?)

另请参阅http://i.imgur.com/tfEyjmN.png?1

1 个答案:

答案 0 :(得分:2)

查看documentation of ExecuteScalar方法,您可以看到:

  

执行查询,并返回查询返回的结果集中第一行的第一列

所以它只返回第一个结果。如果您需要所有这些,可以使用ExecuteReader方法。

var reader = cmd.ExecuteReader();  
List<string> results = new List<string>();
while(reader.Read())
{
     results.Add(reader[0].ToString()); // or reader["items"]
}

或者您也可以使用DataTable

DataTable dt = new DataTable();  
dt.Load(cmd.ExecuteReader());
var results = dt.AsEnumerable()
                .Select(row => row.Field<string>("items"))
                .ToArray();

编辑:您希望获得第一个结果并将其拆分为数组,因此使用ExecuteScalar是正确的方法,但您只需转换结果到string并将其拆分:

string[] que_items = cmd.ExecuteScalar()
                        .ToString()
                        .Split(new[] { Environment.NewLine }, StringSplitOptions.None);