c# MySQL作为多行字符串

本文关键字:字符串 MySQL | 更新日期: 2023-09-27 18:10:47

我试图在c#中查询多行mySQL(文本)成字符串[]

cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT `items` FROM `queue` WHERE `status`='active'", conn); 
object[] que_items = cmd.ExecuteScalar();

items给出(例如):

item1

第二条

item3

没有工作,因为它给出了一个错误。任何帮助吗?

因为每个人都想看到错误:

不能隐式地将类型"object"转换为"object[]"。存在显式转换(您是否缺少强制类型转换?)

另见https://i.stack.imgur.com/dpidY.png

c# MySQL作为多行字符串

查看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);