【问题标题】:Return a varchar from database using dapper [duplicate]使用 dapper 从数据库返回一个 varchar [重复]
【发布时间】:2020-12-17 15:23:05
【问题描述】:

我需要从数据库中检索一个单词/varchar(有时它可以是空字符串或空值)。 我正在使用小巧玲珑,我根本无法检索任何东西。 Web 上的许多教程和问题仅涉及检索 Integer 值,而从未提及 String

这是我目前得到的:

 using (var db = new FbConnection(csb.ToString()))
                {
                    await db.OpenAsync();
                    result = db.ExecuteScalarAsync<string>("SELECT NOME from NACION WHERE NOME = @nacion", new { nacion }).ToString();
                    db.Close();
                }

result 变量应该是字符串,如 "Word" 或空/空字符串,具体取决于查询结果。

现在,它正在返回类似这样的奇怪内容:System.Threading.Tasks.Task'1[System.String]

我做错了什么?

【问题讨论】:

  • 你忘了等待任务,即result = await db.Execute....
  • 如果某些内容不是字符串,请不要只调用ToString()。检查为什么这不是你想象的那样。顺便说一句,您不需要显式调用db.Close(),一旦执行离开using 块,就会发生这种情况

标签: c# asp.net-core async-await


【解决方案1】:

你应该等待对方法ExecuteScalarAsync的调用:

result = await db.ExecuteScalarAsync<string>(...);

请注意,您不应致电ToString()

【讨论】:

  • (你说的)...并且你应该删除不必要的ToString() 调用。
  • 我确实在我的示例中省略了它 :-)
  • 谢谢你,它成功了......我现在意识到这是一个愚蠢的问题......:/无论如何,感谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多