如何使用 dapper 获取第一个子值(通常查询 count(*) 作为唯一结果)
How to get the first child value using dapper (typically querying count(*) as the only result)
我想实现这样的功能:
public static string GetResult(string sql) {
// TODO:
// result = connection.Query(....);
// return result.FirstRow().FirstChild().ToString();
}
然后这样调用:
string myName = GetResult("SELECT userName from tb_Users WHERE ID = 1");
// or
int totalRows = Convert.ToInt32(GetResult("SELECT count(*) FROM tb_List"));
如何使用 Dapper 实现 TODO 部分?
Dapper 具有 ExecuteScalar[<T>]
,如果您正在阅读一栏、一行、一个网格,则可以使用它。所以:
var name = connection.ExecuteScalar<string>("select 'abc'");
int count = connection.ExecuteScalar<int>("select 123");
对于所有常见的 "sort of one row, multiple columns" 场景,还有 Query{First|Single}[OrDefault][<T>]
。
关于你的 API 的警告:任何 仅 接受字符串 sql (并且没有单独的参数)的东西让我非常紧张您将导致 sql 注入问题。
我想实现这样的功能:
public static string GetResult(string sql) {
// TODO:
// result = connection.Query(....);
// return result.FirstRow().FirstChild().ToString();
}
然后这样调用:
string myName = GetResult("SELECT userName from tb_Users WHERE ID = 1");
// or
int totalRows = Convert.ToInt32(GetResult("SELECT count(*) FROM tb_List"));
如何使用 Dapper 实现 TODO 部分?
Dapper 具有 ExecuteScalar[<T>]
,如果您正在阅读一栏、一行、一个网格,则可以使用它。所以:
var name = connection.ExecuteScalar<string>("select 'abc'");
int count = connection.ExecuteScalar<int>("select 123");
对于所有常见的 "sort of one row, multiple columns" 场景,还有 Query{First|Single}[OrDefault][<T>]
。
关于你的 API 的警告:任何 仅 接受字符串 sql (并且没有单独的参数)的东西让我非常紧张您将导致 sql 注入问题。