我正在尝试在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 []'。存在显式转换(您是否错过了演员?)
答案 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);