【问题标题】:How can return string from database using dapper如何使用 dapper 从数据库返回字符串
【发布时间】:2018-10-28 01:48:13
【问题描述】:

我试过了,但它给出了这个错误

必须声明标量变量“@imageid”

controller.cs

    [HttpGet]
    [Route("download/{id:int}")]
    public String Getfiles(int imageid)
    {

        return _ShopDataProvider.DownloadImage(imageid);

    }

class.cs

public String  DownloadImage(int imageid)
    {
        using(IDbConnection dbConnection = Connection)
        {

            string sQuery0 = "SELECT path FROM Shop WHERE ShopId = @imageid";
            dbConnection.Open();
            String Path = dbConnection.QueryFirstOrDefault<String>(sQuery0, new { ShopId = imageid });

            return Path;
        } 
    }

【问题讨论】:

    标签: c# dapper


    【解决方案1】:

    您在 SQL 查询中声明了一个名为 @imageid 的参数,但没有为其提供值。您正在为参数 @ShopID (new { ShopId = imageid }) 提供一个值,您的 SQL 查询不使用该值。

    new { ShopId = imageid } 更改为new { imageid = imageid }

    请参考documentation

    【讨论】:

    • 数据库中有一些值错误已修复,但当我将 SELECT path FROM Shop WHERE ShopId = @imageid 更改为 Select ShopName ..etc 时,返回字符串为空
    • String Path = dbConnection.QueryFirstOrDefault&lt;String&gt;(sQuery0, new { imageid = 1 }); 它返回一个值,但 String Path = dbConnection.QueryFirstOrDefault&lt;String&gt;(sQuery0, new { imageid = imageid }); 它不返回值
    • @DulangaHeshan 使用调试器。查看imageid 的值。它有你期待的价值吗?
    • 是的,我修复了错误是[Route("download/{id:int}")] 这里非常感谢兄弟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多