我正在尝试将多行 mySQL(文本)查询到 c# 中的 string[]
cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT `items` FROM `queue` WHERE `status`='active'", conn);
object[] que_items = cmd.ExecuteScalar();
项目给出(作为示例):
item1
item2
item3
不起作用,因为它给出了错误。 有什么帮助吗?
因为每个人都想看到错误:
Cannot implicitly convert type 'object' to 'object[]'. An explicit conversion exists (are you missing a cast?)
最佳答案
查看documentation of ExecuteScalar
方法你可以看到:
Executes the query, and returns the first column of the first row in the result set returned by the query
所以它只返回第一个结果。如果您需要所有这些,您可以使用 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[] que_items = cmd.ExecuteScalar()
.ToString()
.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
关于C# MySQL 作为多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334951/