C# MySQL 作为多行字符串

标签 c# mysql string

我正在尝试将多行 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?)

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

最佳答案

查看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/

相关文章:

c# - 通过表达式树从嵌套类获取静态字段

c# - 发送包含 HTML 文件作为正文的电子邮件 (C#)

c# - 如何获取目录中的文件列表

php - echo 两个表问题需要发布两次(mysql,php)

iphone - 如何在iPhone SDK的UITextField文本中删除开头的0

java - 不使用 length() 方法的字符串长度

c# - 使用互操作将整数数组从 C# 传递到 native 代码

MySQL多重排序并忽略?

mysql 选择并联合所有

python 3 : Perfect Alphabetical Order